首页 > 解决方案 > 在 MongoDB 中使用 Match exp 和 objectId

问题描述

我正在创建一个带有变量的查询以添加一个键并对应于我需要检查提到的 id 是否等于所有者 id 的键。我将此代码与名称一起使用,它工作正常,但对于对象 ID,我遇到了错误。我尝试了 toObjectId 函数,但它在 MongoDB 中无法识别。在这种情况下如何使用匹配功能?我应该在哪里添加“$oid”功能或其他可以提供帮助的东西?

 {"collection": "Sample",
              "aggregate": [
            {"$addFields" : {"Key" : {{ Key }} }},
            {"$project": {"owner": "$owner",
            "check": {"$switch": {"branches": [{"case": {"$eq": ["$Key",556312]},"then": "5efaefc277fabb0d0f7039ab"},
                                {"case": {"$eq": ["$Key",844012]},"then": "5e046b55d1fe060d020f51ac"}
                                ]}}}},
            {"$oid": "check"},
            {"$match" :{"$expr" : {"$eq" :["$owner", "$check"]}}}
    
    ]}

标签: jquerymongodbmongodb-queryobjectidredash

解决方案


从您的驱动程序导入对象 ID

ObjectId = require('mongodb').ObjectID;

并且像这样使用它,因为您的 id 是硬编码的:

ObjectId("5efaefc277fabb0d0f7039ab")

推荐阅读