0

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

还有另一个名为“B”的组位于“A”组内,也是一个数组。

我想查找和更新组“B”元素。

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

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

像这样的东西..

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

有什么建议吗?

如果你给我特别是 PHP 实现方面的建议,那将非常有帮助

4

2 回答 2

2

也许我误解了一些东西,但是有什么问题:

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

另请注意, findOne 仅返回一个文档。

于 2011-08-18T01:57:02.330 回答
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 驱动程序执行类似的操作。关键是分步执行操作:首先抓取您感兴趣的文档;然后过滤和操作它的字段;然后将其保存回数据库。

于 2011-08-18T02:51:21.840 回答