我剛剛開始使用MongoDB構建一個小應用程序,似乎無法找到任何示例,我可以將對象添加到深度數組中,然後可以單獨查找這些數組。將對象添加到MongoDB中的深度數組中
讓我通過以下一組步驟以及我編寫的代碼進行說明。
我在MongoDB中創建一個簡單的對象,像這樣:
testing = { name: "s1", children: [] };
db.data.save(testing);
當我詢問這一切看起來不錯,單純的靜止:
db.data.find();
,輸出:
{
"_id" : ObjectId("4f36121082b4c129cfce3901"),
"name" : "s1",
"children" : [ ]
}
然而,在我通過「推入」一個對象來更新「children」數組後,我進入了各種問題。
首先,我運行更新命令:
db.data.update({ name:"s1" },{
$push: {
children: { name:"r1" }
}
});
然後,當我查詢數據庫:
db.data.find({
children: { name: "r1" }
});
結果:
{
"_id" : ObjectId("4f36121082b4c129cfce3901"),
"children" : [ { "name" : "r1" } ],
"name" : "s1"
}
不使任何意義對我來說,因爲我會有預計以下內容:
{
"name": "r1"
}
有沒有更好的將數據插入到MongoDB的方法,這樣當我運行查詢時,我會提取單個對象而不是整個樹?或者可能是編寫「查找」查詢的更好方法?
主要是由於JSON/BSON對象的工作方式,尤其是在數組中。如果有人說「爲給定的博客文章找到一個特定的評論」,那麼返回博客文章+所有其他評論並沒有意義,而只是評論對象。我在MongoDB文檔網站上發現了一個資源,它提到了構建樹的不同方式,但還沒有找到任何有用的東西來繼續。 – 2012-02-11 11:09:45
使用我列出的鏈接中的功能獲取所需的字段。還有更多的情況下,您希望比返回的一個找到的字段多,而不是隻有一小部分文檔返回以響應搜索。 – 2012-02-11 16:33:01