2013-03-10 45 views
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的财产错误。但如果不能通过参考来完成,那我还有什么其他选择?以及参考的优点是什么?

回答

0

首先,将文档嵌入到文档中是不同的,然后引用文档。就你而言,你指的是一个文档而不是嵌入。所以你不应该像嵌入式文档那样对待它。你正在做的是查询它,就好像你嵌入了它不是的文档。

Mongodb文档非常清楚如何使用引用,我认为您必须访问the mongodb documentation for referencing。但总而言之,一旦你从db.ttt.find({ "_id" : "b"})得到结果,那么你的应用程序应该进行另一个查询,以查找你在第一个查询中得到的引用所引用的文档。

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