例如,如果我有一个数据库,例如
Number OtherStuff
1 stuff
2 stuffalso
1 morestuff
1 otherstuff
2 stuff2
3 stuff3
4 stuff4
有没有办法只取回那些与"数字"<4 并且有超过 2 个实例的条目?所以在这种情况下,只有那些带有"数字"== 1 的,因为有 3 个。
类似db.find({Number: {$lt: 4}, somethingelsehere})
您可以运行 $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" }
}
])