询问mongoDB聚合返回结果空数组,NodeJS

时间:2017-10-13 16:03:58

标签: node.js mongodb

为什么这个查询适用于我的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); }) });

1 个答案:

答案 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
});