我已经将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 :(得分:0)
首先,在文档中嵌入文档与引用文档不同。在您的情况下,您指的是文档而不是嵌入。因此,您不应该像嵌入式文档那样对待它。你正在做的是查询它,好像你有嵌入的文件,它不是。
Mongodb文档非常清楚如何使用引用,我认为您必须访问the mongodb documentation for referencing。但简而言之,一旦你从db.ttt.find({ "_id" : "b"})
获得了结果,那么你的应用程序应该进行另一个查询,找到你在第一个查询中得到的引用所引用的文档。
要记住的重要事项是,在嵌入式文档的情况下,您可以运行一个查询以从嵌入式文档中获取结果,而在引用文档中,您必须获取第二个查询的帮助。