小编r6d*_*l99的帖子

同一数组元素的多个匹配条件

我有一个名为“devices”的集合,其中包含大约 50,000 个文档。我试图查询每个文档中的“routes”数组,并在单个数组元素满足多个条件时让它返回文档。问题是 Mongo 似乎正在返回答案,其中不同数组元素满足多个条件。

样本数据:

{
    "_id": 0,
    "name": "example1",
    "serial": "123456",
    "routes": [
        {
            "description": "8989",
            "zone": "front"
        },
        {
            "description": "1221",
            "zone": "back"
        }
    ]
},
{
    "_id": 1,
    "name": "example2",
    "serial": "987654",
    "routes": [
        {
            "description": "1515",
            "zone": "front"
        },
        {
            "description": "8989",
            "zone": "side"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我尝试过简单的 .find() 变体,但没有运气,包括

db.devices.find({"routes.description":"8989", "routes.zone":"front"})
db.devices.find({"$and": [{"routes.description":"8989"}, {"routes.zone":"front"}]})
Run Code Online (Sandbox Code Playgroud)

我还尝试过聚合,但这对我来说似乎失败了,因为我对它们的理解很基本。上述查询的期望结果是单个文档 ("_id":0),而不是两个文档。

{ "_id" : 0, "name" : "example1", "serial" : "123456", "routes" : [ { "description" : "8989", "zone" …
Run Code Online (Sandbox Code Playgroud)

arrays mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
3287
查看次数