Mongodb:如何获得;查找“;来自其他集合的条件?
就像下面的SQL语句一样:Mongodb:如何获得;查找“;来自其他集合的条件?,mongodb,Mongodb,就像下面的SQL语句一样: select * from t1 where id > (select id from t2 where name='abc') 是否可以在一个mongodb查询中实现这一点 您应该能够使用$lookup$查找用于在另一个集合中查找文档,它的工作方式更像一个联接。下面是一个例子 db.users.aggregate([{ $lookup: { from: "countries", localField: "country",
select * from t1 where id > (select id from t2 where name='abc')
是否可以在一个mongodb查询中实现这一点 您应该能够使用$lookup$查找用于在另一个集合中查找文档,它的工作方式更像一个联接。下面是一个例子
db.users.aggregate([{
$lookup: {
from: "countries",
localField: "country",
foreignField: "_id",
as: "cname"
}
}])
在上面的查询中,您将用户集合中的记录与字段country=\u id上的countries集合进行匹配
然后,可以在查找中引入管道协议器以应用过滤器。我从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"
}
}
])
你可以在官方网站上找到很好的解释和示例你的示例与OP查询不匹配。我只是在帮他做一个示例。而不是实际的查询本身。要编写实际的查询,我必须创建集合。不,我要说的是,您的示例用于不同的查询。OP特别想知道t1中id大于另一个表中的值的项。$lookup示例执行直接匹配,而不是大于条件。您充其量只是描述MongoDB聚合框架的一些功能,但并没有针对其特定问题向OP提供任何指导。将来任何人看到这个问题都会被你的答案弄糊涂。请创建实际查询。请创建集合。或者,不要提供答案,因为这个答案没有帮助。好的,让我尝试创建集合,并尝试在mongo中重新创建实际的sql。我会随时通知你的。