MongoDB $where操作符
$where操作符
$where操作符功能强大且灵活,它可以将JavaScript表达式的字符串或JavaScript函数作为查询语句的一部分。在JavaScri pt表达式和函数中,可以使用this或obj来引用当前操作的文档。JavaScript表达式或函数返回值为true时,才会返回当前的文档。 查询时,$where操作符不能使用索引,每个文档需要从BSON对象转换成JavaSript对象后,才可以通过$where表达式来运行。因此,它比常规查询要慢很多,一般情况下,要避免使用$where查询。
$where实例
$where操作符功能强大且灵活,它可以将JavaScript表达式的字符串或JavaScript函数作为查询语句的一部分。在JavaScri pt表达式和函数中,可以使用this或obj来引用当前操作的文档。JavaScript表达式或函数返回值为true时,才会返回当前的文档。 查询时,$where操作符不能使用索引,每个文档需要从BSON对象转换成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 }]
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Yii2 mongodb 扩展的where的条件加入大于 小于号
- 下一篇: yii2总结
