【问题标题】:mongodb lookup with collection and dynamic query output带有集合和动态查询输出的 mongodb 查找
【发布时间】:2018-12-28 07:54:53
【问题描述】:

我有一些动态查询集合

var condition = dynmic_query
db.collection.find(condition)

给我一​​个输出

现在我需要从以前的查询中得到的任何东西都需要查找另一个集合。

如果这在 mongodb 中还不可能,我很害怕

[https://jira.mongodb.org/browse/SERVER-22497]

我做了一些谷歌,但不知道如何实现这一目标

我必须在 node.js 中执行这个查询

请帮忙

谢谢

【问题讨论】:

  • 发布您的代码并附上详细解释......
  • sql 连接等价物?
  • 这看起来像一个基本的查找场景。这与 SERVER-22497 有什么关系?您的 find 输出是否包含您想在查找阶段的 from 字段中使用的集合名称?请在帖子中添加一些数据和查询。
  • 你能详细解释一下吗?
  • 我添加了一个简单易用的解决方案,请看一下。为您的问题 +1!

标签: node.js mongodb nosql


【解决方案1】:

听起来您需要 Aggregation Framework$lookup 管道阶段和 $match 管道。这有点像在 SQL 世界中进行 JOIN。这是一个例子:

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"
         }
    }
])

【讨论】:

    【解决方案2】:

    您不能在第二个查询中使用一个查询输出。但是您需要在代码级别处理此问题。

    点击一个查询并将结果保留在一个变量中,然后使用该结果在另一个查询中进行搜索。

    Mongodb 不适用于复杂的获取。这就是它为您提供高性能的全部原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-23
      • 2018-03-14
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2017-09-15
      相关资源
      最近更新 更多