我对集合有一些动态查询
var condition = dynmic_query
db.collection.find(condition)
正在给我输出
现在我需要从先前查询中得到的内容,需要使用另一个集合进行查找。
如果在mongodb中还无法做到这一点,我会感到恐惧
[https://jira.mongodb.org/browse/SERVER-22497]
我做了一些谷歌,但不知道如何实现这一目标
我必须在node.js中执行此查询
请帮助
谢谢
答案 0 :(得分:0)
您不能在第二个查询中使用一个查询输出。但是您需要在代码级别进行处理。
打一个查询并将结果保存在一个变量中,然后使用该结果搜索另一个查询。
Mongodb不适用于复杂的访存。这就是它为您提供高性能的全部原因。
答案 1 :(得分:0)
听起来您需要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 :(得分:0)
您可以轻松地进行汇总查询:
示例:
var condition = dynmic_query
db.collection.aggregate([
{
$match: condition
},
{
$lookup: {
from: "collectionName",
localField: "ref",
foreignField: "ref_in_foreign_collection",
as: "foo"
}
}
])
现在,您将以数组的形式在每个对象的 foo 中获得联接数据。
希望它可以解决您的查询。