MongoDB:DBREF列表中的嵌套搜索

保罗

我在使用嵌套DBREFs列表的Mongo DB前面(是的,我知道这是使用Mongo的一种非常奇怪的方法,除此之外,最好不要使用@DBREF

我们有读者,书籍和作者的集合。

读者看起来像这样:

{
    "_id" : ObjectId("12345"),
    "age" : 37,
    "books" : [ 
        {
            "$ref" : "book",
            "$id" : "123"
        }, 
        {
            "$ref" : "book",
            "$id" : "456"
        }
    ]
}

$ref包含集合名称,$id书的ID。

显然,这些书看起来是一样的。而不是书籍DBREF列表,而是有作者DBREF列表。

两个问题:

  1. 有没有一种方法可以在列表中列出author1的读者?
  2. 如何列出只有不到40年作者书籍的读者?

尝试使用Java解决此问题...

迪米特罗·舍甫琴科

要使用Java驱动程序基于数据库引用进行查询,请使用类DBRef

1.是否可以用列表中列出author1的读者来列出读者?

是的。author1通过单独的查询获取所有的图书ID,然后查找所有拥有该图书的读者参考$in您的图书ID列表。

2.如何列出只有不到40年作者书籍的读者?

这次,您将需要三个查询:

  1. 查找所有40岁以下的作者的ID
  2. $in在第1步中查找所有ID为的作者的书籍
  3. $in从步骤2中查找所有拥有ID为的图书的读者

这可能很繁重,但这就是将数据以规范化的方式存储在不支持联接的数据库中的结果。另一种方法是以简化查询的方式重组数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章