2013-03-10 55 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"})得到結果,那麼你的應用程序應該進行另一個查詢,以查找你在第一個查詢中得到的引用所引用的文檔。

要記住的重要一點是,如果是嵌入式文檔,您可以運行一個查詢以從嵌入式文檔中獲取結果,而在參考文檔中您必須藉助第二個查詢。