例如,有一个名为“A”的组,它是一个数组。
还有另一个名为“B”的组,它在组“A”中也是一个数组。
我想找到并更新“B”组元素。
我尝试像jQuery一样查询链式查询。
db.collection.findOne({"group":"A"}).findOne({"society":"B"})
像这样......
但这不起作用。但重点是我想查询组中的组元素。
有关这样做的任何建议吗?
如果您特别为PHP实施提供建议,那将非常有用
答案 0 :(得分:2)
也许我误解了一些事情,但出了什么问题:
db.collection.findOne({"group":"A", "society":"B"})
另请注意,findOne只返回一个文档。
答案 1 :(得分:0)
假设您的文档如下所示:
db.mycol.insert( {
"_id": 1,
"group": "A",
"societies": [
{"society": "A", "name": "Alpha" },
{"society": "B", "name": "Beta" }
]
} );
然后在Mongo shell中,您可以使用查询检索所需的文档:
var group = db.mycol.findOne( { "group": "A" } );
然后使用一些客户端JavaScript进一步过滤其字段:
var societyB = group.societies.filter(function (val) {
return (val.society == "B");
} );
printjson(societyB);
你可以用PHP驱动程序做类似的事情。关键是在不同的步骤中执行操作:首先获取您感兴趣的文档;然后过滤和操纵它的字段;然后将其保存回数据库。