带有_id的Mongoose OR运算符

时间:2016-02-05 05:37:24

标签: node.js mongodb mongoose

我正在使用猫鼬。

当我这样做时,它可以正常工作:

userModel.find({  $or:[
                        {first_name:"Bob"}, 
                        {last_name: "Marley"}
                      ] 
               }, function(err, result){
                 if(err) //do something;

                 console.log(result);
               });

但是当我使用_id作为表达式之一时,它只查找_id并且不关心其他表达式:

userModel.find({  $or:[
                        {_id: "56b426aa1d6c7a642ab1a52d"}, 
                        {last_name: "Marley"}
                      ] 
               }, function(err, result){
                 if(err) //do something;

                 console.log(result);
               });

回顾: 第一个例子是找到名字Bob或姓Marley。 但第二个例子只能找到我提供的确切id或null。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

MongoDB _id字段是一种特殊类型的字段,需要先进行初始化,然后才能在查询中使用:

new Mongoose.Types.ObjectId("56b426aa1d6c7a642ab1a52d")

var ObjectId = require('mongoose').Types.ObjectId;
new ObjectId("56b426aa1d6c7a642ab1a52d");