在Mongo中都知道字符串類型大小比較都是以ASCII進行比較的,所以無法真實比較字符串類型的數值大小
比如查詢age大於3的:
db.getCollection('ddzinttest').find({"age":{$gt:"3"}})
得到的結果肯定不是我們所需要的
那么這種問題該怎么解決呢。Mongo中有一種**$where**查詢,這種查詢是可以解決這樣需求,
db.getCollection('ddzinttest').find({"$where":"this.age>3"})

可以看到使用**$where**是可以達到這個需求的,那**
$where**這東西是什么呢:
其實
$where查詢是將
JavaScript表達式的字符串或函數作為查詢的一部分,
Mongo是支持JS語言的,也就是說可以在Mongo中使用JS函數,也就是說其實語句可以這么寫
db.getCollection('ddzinttest').find({$where:function(){return this.age>3}})
而
this.age>3是字符串形式的表達方式
當然可以利用JS函數寫一些更加復雜的查詢:例如子文檔中字符串的比較查詢
db.getCollection('ddzinttest').find({$where:function(){ for(var i =0;i<this.Child.length;i++){ var currentChild=this.Child[i]; if(currentChild.key==='123'&¤tChild.value>'111'){ return true; } } return false; }})
查詢子文檔數組Child中key等於123並且value大於111的數據
當然,這種復制的就不能使用字符串表達式了。