2016-02-05 88 views
1

我正在使用貓鼬。Mongoose或運算符_id

當我做到這一點,它工作正常:

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

概述: 第一個例子會找到名字鮑勃或姓氏馬利。 但第二個例子只能找到我提供的確切id或null。

我在做什麼錯?

+0

你可以提供一個文件樣本證明了這一點?還打開調試,看看貓鼬是如何發送語句'mongoose.set(「Debug」,true)' –

+0

對不起,我沒有注意到它產生了一個錯誤。 錯誤被轉換爲ObjectId失敗。我已經爲_id的值添加了一個字符,並使ObjectId無效。 無論如何感謝。 – hex20dec

回答

0

MongoDB的_id場是一種特殊類型的字段和需求,進行初始化如下,纔可以在查詢中使用:

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

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