mongodb查找具有相同键值的文档,但不知道该值是多少
我收集了以下文件:mongodb查找具有相同键值的文档,但不知道该值是多少,mongodb,aggregation-framework,mongo-shell,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}
{'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}
您可以使用withpo_no
,然后使用筛选出计数小于1的文档
输出
[
{
"_id": "456",
"amount": 0.1
},
{
"_id": "456",
"amount": 0.4
}
]
您可以使用并检查金额
是否大于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
}
}
])
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
}
}
])