0

我已将 mongodb 文档作为其他文档的参考。但我认为它没有按照我希望的方式工作!

例如:

> db.ttt.insert({_id: "a", b:"b" })
> db.ttt.insert({_id: "b", b: {$id:"a" } })
> db.ttt.find()
{ "_id" : "a", "b" : "b" }
{ "_id" : "b", "b" : { "$id" : "a" } }

由于我将我的最后一次插入作为第一个裁判,所以它应该等同于:

{
   _id: "b", 
    b: {

         {_id: "a", b:"b" }

       } 
}

但是为什么这个查询失败了?

> db.ttt.find({"b.b":"b"} ) 

我可能理解$id' 的属性是错误的。但是,如果不能通过引用来完成,那么我还有什么其他选择?引用的好处是什么?

4

1 回答 1

0

首先,在文档中嵌入文档与引用文档不同。在您的情况下,您指的是文档而不是嵌入。所以你不应该把它当作嵌入式文档。你正在做的是查询它,就好像你有嵌入的文档,但它不是。

Mongodb 文档对如何使用引用非常清楚,我认为您必须访问mongodb 文档以进行引用。但简而言之,一旦您获得了结果,db.ttt.find({ "_id" : "b"})您的应用程序应该进行另一个查询,以使用您在第一个查询中获得的引用来查找引用的文档。

要记住的重要一点是,在嵌入文档的情况下,您可以运行一个查询以从嵌入文档中获取结果,而在引用文档中,您必须借助第二个查询。

于 2013-03-10T10:48:26.673 回答