我可以查询两次以获取mongoDB中更具体的值吗?

时间:2011-08-18 01:45:55

标签: php mongodb mongodb-php

例如,有一个名为“A”的组,它是一个数组。

还有另一个名为“B”的组,它在组“A”中也是一个数组。

我想找到并更新“B”组元素。

我尝试像jQuery一样查询链式查询。

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

但这不起作用。但重点是我想查询组中的组元素。

有关这样做的任何建议吗?

如果您特别为PHP实施提供建议,那将非常有用

2 个答案:

答案 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驱动程序做类似的事情。关键是在不同的步骤中执行操作:首先获取您感兴趣的文档;然后过滤和操纵它的字段;然后将其保存回数据库。