Mongodb 使用与$where的内部字段比较进行查询
我有一个名为Mongodb 使用与$where的内部字段比较进行查询,mongodb,Mongodb,我有一个名为人物的收藏 我知道我可以做到这一点: db.people.find( { $where: "this.lastname == this.firstname" } ); 但我怎么能做这样的事情: db.people.find( { $where: "this.lastname == Acquaintances.lastname" } ); 人工翻译:至少有一个熟人同名的所有人 熟人是一组子文档。mongodb$where命令类似于map reduce,它处理提取数据上的javasc
人物
的收藏
我知道我可以做到这一点:
db.people.find( { $where: "this.lastname == this.firstname" } );
但我怎么能做这样的事情:
db.people.find( { $where: "this.lastname == Acquaintances.lastname" } );
人工翻译:至少有一个熟人同名的所有人
熟人是一组子文档。mongodb
$where
命令类似于map reduce
,它处理提取数据上的javascript表达式。它只适用于运行缓慢的后台作业。在任何正常情况下都不要使用这个
function () {
var arr = [];
for (i in this.Acquaintances) {
arr.push(this.Acquaintances[i].lastname);
}
return arr.indexOf(this.lastname) > -1;
}
db.people.find(f)
查看此项了解更多信息abt
$where
什么是熟人
?局部变量…另一个集合…人的字段
?熟人是一个子文档数组。您需要循环这个。熟人
检查每一行,看看lastname==这个.lastname
。请注意,JS函数速度非常慢,实现的JS enigne(蜘蛛猴)是单线程的。建议不要使用JS函数。我理解其中缓慢的部分,但是对于这个任务来说,什么样的mongo结构会更好?@danip可能是一个快照迭代:{snapshot%28%29}整个结果集