为什么这个查询适用于我的Robo 3T?但不是在nodejs中。查询返回结果null,在Robo中返回我的结果。
但如果我有
ObjectId("59df60fb6fad6224f4f9f22d")
但是在NodeJS中我有错误:
可能未处理的拒绝:
未定义ObjectId
ReferenceError: ObjectId is not defined
如果我换
'ObjectId("59df60fb6fad6224f4f9f22d")'
我的结果数组为null,有人可以告诉我如何保存吗?
NodeJS:
router.get('/usercards', function (req, res) {
var pipeline =
[
{
"$project": {
"name":1,
"boardcards": {
"$reduce": {
"input": "$lists.cards",
"initialValue": [ ],
"in": { "$concatArrays": [ "$$value", {
"$filter": {
"input": "$$this",
"as": "result",
"cond": { "$in": [ 'ObjectId("59df60fb6fad6224f4f9f22d")', {"$ifNull":["$$result.Author", []]} ]}
}
}
]
}
}
}
}
},
{
"$unwind": "$boardcards"
}
];
Board.aggregate(pipeline, function (err, result){
if (err) res.send(err);
console.log(JSON.stringify(result, undefined, 4));
res.send(result);
})
});
答案 0 :(得分:0)
在Node中,您需要使用:var ObjectId = require('mongodb').ObjectID;
然后使用您的管道查询。
如果你使用的是猫鼬,那么:
var mongoose = require('mongoose')
schema1 = mongoose.model('schema'),
mongoose.Types.ObjectId("<object_id>")
schema1.find({"_id": mongoose.Types.ObjectId("<object_id>")}, function
(err, record) {
// Do stuff
});