看下面兩個例子
rs1:PRIMARY> db.display.find({$and: [{$where: '(1386813645 - this.last_active_time > 300)'}, {status: "online"}]}).count() 0 rs1:PRIMARY> db.display.find({$where: '(1386813645 - this.last_active_time > 300)'}, {status: "online"}).count() 0 第二個和第一個等價,是一個隱式的邏輯與操作。一直以來,只有第二中形式,可能是為了更完整吧,2.0之後,MongoDB引入了第一種形式。
參考文檔:http://docs.mongodb.org/manual/reference/operator/query/and/
在文檔中,還提到了另一種使用方法,就是對一個字段執行邏輯與操作的時候,可以簡寫為如下形式:
db.inventory.update( { price: { $ne: 1.99, $exists: true } } , { $set: { qty: 15 } } )
只有當price 不等於1.99,並且存在時,才更新qty為15.所以,我的結論是一般用隱式就好,寫起來簡單方便。