2015-02-09 123 views
1

我試圖在ON PUT事件中檢查數據庫中是否有包含屬於另一個用戶(另一個CardNumber)的相同MobilePhone(或它的9位數字)的數據的記錄, 。如果是這樣,我不想提交新的數據。

我想使用下面的代碼,但它不工作。如果條件總是如此。 我不確定我是否正確使用括號。Mongodb:數組包含值並且不包含另一個

if(this.MobilePhone !== '' && 
db.mobile.find({$and:[ 
    {$in:[ 
     {"mobileuser.MobilePhone":this.MobilePhone.right(9)}, 
     {"mobileuser.MobilePhone":this.MobilePhone}]}, 
    {"mobileuser.CardNumber":{$ne:this.CardNumber}}]}).count() > 0) 
{ 
cancel("MobilePhone is reserved by another user", 403); 
}  

你能檢查語法,並幫助我使它工作嗎?

回答

0

看來,$部分是錯誤的 語法$中

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } } 

是否有可能,雖然你想用「$或」呢?

....包含相同MobilePhone(或它的最後9位).....

db.mobile.find(
    {$and:[ 
      { 
       $or:[ 
         {"mobileuser.MobilePhone":this.MobilePhone.right(9)}, 
         {"mobileuser.MobilePhone":this.MobilePhone} 
        ] 
      }, 
      {"mobileuser.CardNumber":{$ne:this.CardNumber}} 
     ] 
    } 
)