arrays - 如何使用 $in 并使用大于和小于在 mongodb 中查找计数?
问题描述
我在测试集合中有文档,如下所示:
{
"_id" : "3233123123213123123",
"sequence":30,
"containIds":["fgx"]
}
{
"_id" : "534545345345345345",
"sequence":70,
"containIds":["abc", "fgx"]
}
{
"_id" : "56756676767676767",
"sequence":160,
"containIds":[]
}
db.getCollection('Test').find({"containIds":{$in: [ "fgx", "containIds" ]}}).count(); // result 1
and
db.getCollection(Test').count({sequence:{ $gt : 0, $lt : 99}})//result 2
但我想将这两个查询合二为一,并且需要得到一个结果。//结果应该是1
我需要聚合和投影吗?如何在 mongodb 中为 using$in
和 ( $gt
and ) 编写查询?$lt
解决方案
您可以尝试aggregate()
方法和$facet
阶段来分离查询和结果,
first
,您可以更改名称,输入您的匹配条件并$count
获取总记录second
,您可以更改名称,输入您的匹配条件并$count
获取总记录
db.getCollection('Test').aggregate([
{
$facet: {
first: [
{ $match: { "containIds": { $in: ["fgx", "containIds"] } } },
{ $count: "count" }
],
second: [
{ $match: { sequence: { $gt: 0, $lt: 99 } } },
{ $count: "count" }
]
}
}
])
推荐阅读
- c++ - 修复双向链表实现中的内存泄漏
- deno - 如何用 deno “打包”其他资源
- unity3d - Unity:如何使用检查器更改按钮的文本?
- java - 出现错误“表达式的类型必须是数组类型,但它被解析为 Llist
" - f# - 如何使用 Fable Remoting 从客户端本地磁盘向服务器发送二进制数据?
- python - 如何在另一个函数中调用一个随机函数而不在 Python 中每次都单独执行?
- javascript - CSS 变量不会被设置 | 电子
- google-apps-script - 将电子邮件地址从一张表移动到另一张表的脚本
- pine-script - 为什么我得到不匹配的输入?
- python - Python - 获取错误不可排序类型:str<> >= int<>