javascript - 在 mongodb 中的另一个查询中使用上一个查询的结果

标签 javascript mongodb

第一个查询:

    db.a.find({
    "type": ObjectId("50ed90f5a70defef23000002"),
    "config.name": "alpha"
 }, {
    "user": 1
 })

第一个查询结果:

{ "_id" : ObjectId("5684035c91b4693b39547591"), "user" : ObjectId("54ba80ac2735eea200623612") }

第二个查询:

   db.users.find({
    "_id": ObjectId("54ba80ac2735eea200623612")
}, {
    "lastname": 1
})

我可以将这两个查询合并为一个查询吗?第二个查询使用第一个查询结果的 "user"ObjectId("54ba80ac2735eea200623612")

最佳答案

您可以使用带有 $match 的聚合来匹配您的条件,并使用 $lookup 将本地字段 user 映射到您的 用户集合_id字段:

db.a.aggregate(
    [{
        $match: {
            "type": ObjectId("50ed90f5a70defef23000002"),
            "config.name": "alpha"
        }
    }, {
        $lookup: {
            from: "users",
            localField: "user",
            foreignField: "_id",
            as: "users"
        }
    }, {
        $unwind: "$users"
    }]);

在 Javascript 中,例如使用mongoose,您可以使用以下命令来执行此操作:

YourModel.aggregate(
    [{
        $match: {
            "type": ObjectId("50ed90f5a70defef23000002"),
            "config.name": "alpha"
        }
    }, {
        $lookup: {
            from: "users",
            localField: "user",
            foreignField: "_id",
            as: "users"
        }
    }, {
        $unwind: "$users"
    }],
    function(err, result) {
        console.log("lastname : " + result.users.lastname);
    });

关于javascript - 在 mongodb 中的另一个查询中使用上一个查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41316813/

相关文章:

javascript - 从嵌套在函数中的函数返回数组并处理 promise 检查

javascript - 如何在另一个对象中抓取 X 个最常出现的对象并将其属性的总和映射到 Javascript 中的一个新对象?

javascript - 互斥选择框

javascript - javascript 引擎如何计算格式错误的 HTML 文档的标记数?

c++ - Clion mongodb 依赖设置

mongodb - mongodb文本搜索错误没有文本索引

javascript - JavaScript 函数没有返回值

node.js - mongoDB中的update和updateMany方法有什么区别?

MongoDB MapReduce : Global variables within map function instance?

python - 如何将 Google 表格连接到 MongoDB