在 MongoDB 中使用 Match exp 和 objectId
Using Match exp with objectId in MongoDB
我正在创建一个带有变量的查询以添加一个键并对应于我需要检查所提到的 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"]}}}
]}
从您的驱动程序导入对象 ID
ObjectId = require('mongodb').ObjectID;
由于您的 ID 是硬编码的,因此可以这样使用它:
ObjectId("5efaefc277fabb0d0f7039ab")
我正在创建一个带有变量的查询以添加一个键并对应于我需要检查所提到的 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"]}}}
]}
从您的驱动程序导入对象 ID
ObjectId = require('mongodb').ObjectID;
由于您的 ID 是硬编码的,因此可以这样使用它:
ObjectId("5efaefc277fabb0d0f7039ab")