例如,使用以下数据:
{id: 1, fname: "Barry", lname: "Sullivan"}
{id: 2, fname: "Sarah", lname: "Bailey"}
{id: 3, fname: "Drake", lname: "Barry"}
有没有一种方法,可以通过一个查询来检查是否有人具有与id相同的lname:1 fname?
您可以使用$ facet来运行两个单独的查询,并将结果作为一个文档获得。这将为您提供两个单独的数组:1个元素与id:1
和其他文档。然后,您可以简单地运行$ filter获得匹配lnames
:
db.collection.aggregate([
{
$facet: {
first: [ { $match: { id: 1 } } ],
others: [ { $match: { $expr: { $ne: [ "$id", 1 ] } } } ]
}
},
{
$unwind: "$first"
},
{
$project: {
matches: {
$filter: {
input: "$others",
cond: { $eq: [ "$$this.lname", "$first.lname" ] }
}
}
}
}
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句