例如,如果我有一个类似的数据库
Number OtherStuff
1 stuff
2 stuffalso
1 morestuff
1 otherstuff
2 stuff2
3 stuff3
4 stuff4
是否有办法只取回那些匹配'Number'<4并且有2个以上实例的条目?因此,在这种情况下,只有'Number'== 1的那些,因为它们中有3个。
类似db.find({Number: {$lt: 4}, somethingelsehere})
答案 0 :(得分:1)
您可以运行$match来检查Number
是否小于4
,然后运行$group来检查每个组有多少个实例。您还可以运行$unwind和$replaceRoot来恢复数据的原始形状:
db.col.aggregate([
{ $match: { Number: { $lt: 4 } } },
{
$group: {
_id: "$Number",
documents: { $push: "$$ROOT" },
count: { $sum: 1 }
}
},
{
$match: { count: { $gt: 2 } }
},
{
$unwind: "$documents"
},
{
$replaceRoot: { newRoot: "$documents" }
}
])