Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用与$where的内部字段比较进行查询_Mongodb - Fatal编程技术网

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}整个结果集