MongoDB如何查询判断文档中currentId是否存在于selectedIds数组中
错误原因
你之前的写法报错是因为常规查询操作符里的$in只能接收字面量数组,不能直接引用同文档的其他字段值,要引用文档字段需要用$expr运算符结合聚合表达式实现。
正确查询语句
1. 普通find查询写法
db.collection.find({ "selectedIds": { "$exists": true }, "$expr": { "$in": ["$currentId", "$selectedIds"] } })
2. 聚合管道$match阶段写法
如果你是在聚合查询中使用,写法如下:
{ "$match": { "selectedIds": { "$exists": true }, "$expr": { "$in": ["$currentId", "$selectedIds"] } } }
语法说明
$expr允许在查询语句中使用聚合表达式,支持引用同一份文档中的字段值- 聚合版本的
$in接收两个参数:第一个是要查找的值,第二个是目标数组,刚好匹配「判断currentId是否在selectedIds中」的需求
内容的提问来源于stack exchange,提问作者Shruti
相关产品推荐
相关产品推荐

