您的位置:首页 > 数据库 > Mongodb

MongoDB $where操作符

2016-05-04 14:41 239 查看
$where操作符$where操作符功能强大且灵活,它可以将JavaScript表达式的字符串或JavaScript函数作为查询语句的一部分。在JavaScript表达式和函数中,可以使用this或obj来引用当前操作的文档。JavaScript表达式或函数返回值为true时,才会返回当前的文档。查询时,$where操作符不能使用索引,每个文档需要从BSON对象转换成JavaSript对象后,才可以通过$where表达式来运行。因此,它比常规查询要慢很多,一般情况下,要避免使用$where查询。$where实例
db=connect("localhost:27017/test");
db.col.drop();
varbulk=db.col.initializeUnorderedBulkOp();
//测试数据
vardoc1={"apple":1,"banana":6,"peach":4}
bulk.insert(doc1);
vardoc2={"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"}
*/
varcursor=db.col.find(
{
$where:function()
{
for(varcurrentinthis)
{
								printjson(current);	
for(varotherinthis)
{
if(current!=other&&this[current]==this[other])
returntrue;
}
}
}
});
printjson(cursor.toArray());
varcursor=db.col.find(
{
$where:"this.apple==1&&this.banana==6"
});
printjson(cursor.toArray());
运行结果:
C:\>mongo--quietfind_where.js
========find--$where操作符的使用========
[
{
"_id":ObjectId("56e57131ec7f668422a1094a"),
"apple":3,
"banana":3,
"peach":4
}
]
[
{
"_id":ObjectId("56e57131ec7f668422a10949"),
"apple":1,
"banana":6,
"peach":4
}
]

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: