使用Mongoose无法获取$或查询在NodeJS中工作

时间:2013-08-27 20:54:15

标签: node.js mongodb mongoose

我有一个NodeJS应用程序,其中包含一个id,并从我的MongoDB数据库中返回一个对应于所述id的对象。 id可以在我的模型中与_id(ObjectID)或external_id(string)匹配,为什么我要过滤掉id等于_id或等于external_id的对象。我编写了这段代码,但是当我在NodeJS中运行它时它似乎不起作用,但是如果我在终端中的mongo中尝试它可以正常工作:

myModel.findOne({$or: [{_id: my_id}, {external_id: my_id}]}, function (err, model) {
    ...
});

由于它在终端中工作,我猜可能存在两个模型对象的不同类型的问题,但我无法弄明白。 my_id是一个字符串。

感谢您的任何建议。 的Mattias

2 个答案:

答案 0 :(得分:2)

find实际上会返回一个游标,即使只有一个记录匹配,你需要通过游标迭代,试试这个:

myModel.find({$or: [{_id: my_id}, {external_id: my_id}]}).nextObject(function (err, model) {
    ...
}

答案 1 :(得分:0)

您可以使用toArray()函数将在游标中获得的结果转换为数组,并在代码中更轻松地使用它。

myModel.findOne({$or: [{_id: my_id}, {external_id: my_id}]}).toArray(function (err, model) { ... });