就像这样的SQL一样:
select * from t1 where id > (select id from t2 where name='abc')
是否可以在一个mongodb查询中完成此操作?
答案 0 :(得分:-1)
您应该可以使用$ lookup。 $ lookup用于在另一个集合中查找文档,它的工作方式更像是联接。一个例子如下。
db.users.aggregate([{
$lookup: {
from: "countries",
localField: "country",
foreignField: "_id",
as: "cname"
}
}])
在上述查询中,您将用户集合中的记录与字段country = _id上的国家/地区集合进行匹配。
然后,您可以在查找内部引入管道协议,以应用过滤器。我从mongodb文档中挑选了一个供您参考的示例
db.orders.aggregate([
{
$lookup:
{
from: "warehouses",
let: { order_item: "$item", order_qty: "$ordered" },
pipeline: [
{ $match:
{ $expr:
{ $and:
[
{ $eq: [ "$stock_item", "$$order_item" ] },
{ $gte: [ "$instock", "$$order_qty" ] }
]
}
}
},
{ $project: { stock_item: 0, _id: 0 } }
],
as: "stockdata"
}
}
])
上找到很好的解释和示例。