Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb:如何获得;查找“;来自其他集合的条件?_Mongodb - Fatal编程技术网

Mongodb:如何获得;查找“;来自其他集合的条件?

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",

就像下面的SQL语句一样:

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。我会随时通知你的。