$where操作符


JavaScript函数作为查询语句的一部分。在JavaScri pt表达式和函数中,可以 使用this或obj来引用当前操作的文档。 JavaScript表达式或函数返回值为true时,才会返回当前的文档。



JavaSript对象后,才可以通过$where表达式来运行。因此,它比常规查询要 慢很多,一般情况下,要避免使用$where查询。




$where实例


db = connect("localhost:27017/test"); 
    
    db.col.drop();
    
    var bulk = db.col.initializeUnorderedBulkOp();
    
     
    
    //测试数据
    
    var doc1 = { "apple":1, "banana": 6, "peach" : 4} 
    
    bulk.insert(doc1);
    
    var doc2 = {"apple":3, "banana": 3, "peach" : 4}        
    
    bulk.insert(doc2);
    
    //执行插入操作
    
    bulk.execute()
    
     
    
     
    
    print("========find--$where操作符的使用========")
    
    /*
    
      参数可以是JavaScript函数或JavaScript表达式的字符串
    
       { $where: function() { } }  
    
       { $where: "this.A == this.B"} 或 { $where: "obj.A == obj.B"}
    
    */
    
    var cursor = db.col.find(
    
                            {
    
                                $where:function() 
    
                                {
    
                                   for (var current in this) 
    
                                   {
    
    								  printjson(current);	
    
                                      for (var other in this)
    
                                      {
    
                                           if (current != other && this[current] == this[other])
    
                                               return true;
    
                                      }
    
                                   }
    
                                }
    
                            });
    
    printjson( cursor.toArray() );
    
     
    
    var cursor = db.col.find(
    
                            {
    
                                $where:"this.apple==1 && this.banana==6"
    
                            });
    
    printjson( cursor.toArray() );
    
     


运行结果:


C:\>mongo --quiet find_where.js

========find--$where操作符的使用========

[

{

"_id" : ObjectId("56e57131ec7f668422a1094a"),

"apple" : 3,

"banana" : 3,

"peach" : 4

}

]

[

{

"_id" : ObjectId("56e57131ec7f668422a10949"),

"apple" : 1,

"banana" : 6,

"peach" : 4

}

]