MongoDB的$mod query operator提供了一种方法来选择字段的值 V 除以除数 D 的字段具有指定的余数< EM> - [R 。因此,它选择 V mod D 等于 R 的文档。
我需要切换模数和模运算的除数。换句话说,我需要选择提供的股息 D 除以字段的值 V 的文档具有指定的余数 R 。所以我需要选择 D mod V 等于 R 的文档。
是否可以切换MongoDB的$ mod查询运算符的被除数和除数?如果没有,是否可以将查询传递给自定义函数来处理这个问题?
答案 0 :(得分:0)
使用.find
运算符的常规$mod
查询在此处无效,但您仍然可以使用聚合框架和$redact
运算符以及$mod
来执行此操作算术聚合运算符。
假设我们的收藏中有以下文件:
{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 },
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 },
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 },
{ "_id" : ObjectId("573f63504c01ce47a183a636"), "a" : 24 }
以下查询返回60
模拟字段a
的值等于0
的所有文档。
db.collection.aggregate([
{ "$redact": {
"$cond": [
{ "$eq": [ {"$mod": [ 60, "$a" ] }, 0 ] },
"$$KEEP",
"$$PRUNE"
]
}}
])
产生:
{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 }
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 }
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 }
另一种可能效率较低的方法是使用$where
运算符。
db.collection.find("60 % this.a === 0")