首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB:与$match配合使用

MongoDB:与$match配合使用
EN

Stack Overflow用户
提问于 2016-01-15 07:49:44
回答 1查看 319关注 0票数 0

嗨:我使用了多个$match和$and运算符,我得到了错误:

代码语言:javascript
复制
uncaught exception: aggregate failed: {
    "errmsg" : "exception: Unrecognized pipeline stage name: '$and'",
    "code" : 16436,
    "ok" : 0
}

我的db.version返回3.0.4。根据MongoDb文档,这应该在版本3.0.x中得到支持。这里有什么地方我做错了吗?谢谢你的帮助。

下面是我的问题:

代码语言:javascript
复制
db.getCollection('plannedVoyageStops').aggregate(    
    {$and : {$match:{ "scenarioId":"xxxx"},$match:{"action":"remove"}} },  
    {$unwind : "$plannedCMSs" },
    {$project: {_id: 0, scenarioId: 1, 
                "shipmentNumber":"$plannedCMSs.shipmentNumber",
                "vsId": 1, "stopSeqNum":1, "trade":1,
                "svvd": 1,                
                "action":"$plannedCMSs.action"
                }
    }
);

单个匹配条件可以很好地工作,并且结果集合包含所有类型的操作,理想情况下,我打算只获取那些带有action=="remove“的操作。

代码语言:javascript
复制
# db.getCollection('plannedVoyageStops').aggregate(
#     {$match:{ "scenarioId":"xxxx"}},
#     {$unwind : "$plannedCMSs" },
#     {$project: {_id: 0, scenarioId: 1,
#                 "shipmentNumber":"$plannedCMSs.shipmentNumber",
#                 "vsId": 1, "stopSeqNum":1, "trade":1,
#                 "svvd": 1,
#                 "action":"$plannedCMSs.action"
#                 }
#     }
# );
EN

回答 1

Stack Overflow用户

发布于 2016-01-15 08:36:42

您的问题是您拥有两次$match密钥。这是不允许的。如果希望在$and运算符中匹配两个条件,则需要一个条件数组。但是,这里不需要$and:在mongo查询中,$and是隐式的,只使用逗号。只需将JSON查询分配给您的$match

代码语言:javascript
复制
db.getCollection('plannedVoyageStops').aggregate(    
    {$match : { "scenarioId":"xxxx","action":"remove"}},  
    {$unwind : "$plannedCMSs" },
    {$project: {_id: 0, scenarioId: 1, 
                "shipmentNumber":"$plannedCMSs.shipmentNumber",
                "vsId": 1, "stopSeqNum":1, "trade":1,
                "svvd": 1,                
                "action":"$plannedCMSs.action"
                }
    }
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34801969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档