2011-08-18 78 views
0

例如,有一個名爲「A」的組是一個數組。我可以查詢兩次以獲得mongoDB中更具體的值嗎?

還有另一個名爲「B」的組,它在組「A」內也是一個數組。

我想找到並更新組「B」元素。

我試圖查詢像jQuery中的鏈式查詢。

db.collection.findOne({"group":"A"}).findOne({"society":"B"}) 

這樣的事情..

但這不起作用。但重點是我想查詢組中的組元素。

這樣做的任何建議嗎?

如果你給我的建議特別是與PHP實現,這將是真正有用的

回答

2

也許我誤解的東西,但什麼是錯的:

db.collection.findOne({"group":"A", "society":"B"}) 

還要注意的是findOne只返回一個文件。

+0

我是說。查詢已查詢的結果。可能嗎? – InspiredJW

+0

我明白了。我想,不是單靠MongoDB驅動程序。有人可以實現該客戶端。 – Thilo

+0

這有點給了我靈感。謝謝。 – InspiredJW

0

假設你的文件看起來是這樣的:

db.mycol.insert({ 
    "_id": 1, 
    "group": "A", 
    "societies": [ 
     {"society": "A", "name": "Alpha" }, 
     {"society": "B", "name": "Beta" } 
    ] 
}); 

然後在蒙戈外殼,您可以檢索文檔你想使用的查詢:

var group = db.mycol.findOne({ "group": "A" }); 

再進一步篩選下來的使用某些客戶端JavaScript的字段:

var societyB = group.societies.filter(function (val) { 
    return (val.society == "B"); 
}); 

printjson(societyB); 

你可以做一些事情g與PHP驅動程序類似。關鍵是要分開執行該操作:首先抓住您感興趣的文檔;然後過濾並操作其字段;然後將其保存回數據庫。

相關問題