mongodb查找具有相同键值的文档但不知道该值是什么

标签 mongodb aggregation-framework mongo-shell

我收集了以下文档;

{'po_no': '456', 'amount': 0.1}
{'po_no': '455', 'amount': 0.2}
{'po_no': '454', 'amount': 0.3}
{'po_no': '456', 'amount': 0.4}

我喜欢查找'po_no'具有相同值的文档,但不知道该键的值是哪个;所以会得到如下结果;

{'po_no': '456', 'amount': 0.1}
{'po_no': '456', 'amount': 0.4} 

最佳答案

您可以使用$group然后检查金额 $size大于1:

db.col.aggregate([
    {
        $group: {
            _id: "$po_no",
            amount: { $push: "$amount" }
        }
    },
    {
        $match: {
            $expr: {
                $gt: [ { $size: "$amount" }, 1 ]
            }
        }
    },
    {
        $unwind: "$amount"
    },
    {
        $project: {
            _id: 0,
            po_no: "$_id",
            amount: 1
        }
    }
])

MongoDB playground

关于mongodb查找具有相同键值的文档但不知道该值是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55299677/

相关文章:

node.js - 找不到 mongodb 集合/数据

mongodb - 无法通过 mongo shell 连接到 mongodb atlas

mongodb - 在mongodb中提取子数组值

mongodb - 在 heroku 上部署 Meteor 1.0 应用程序后出现应用程序错误

java - 如何使用java显示mongoDB数组

mongodb - 填充 $lookup 中的特定字段

mongodb - 为其他字段的计数创建新字段

Mongodb聚合框架|双赛

bash - 在 mongodb 查询中嵌入 bash 变量

java - MongoDB 数字范围搜索无法按预期工作