Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Javascript 在mongodb中将objectId用作数组_Javascript_Mongodb - Fatal编程技术网

Javascript 在mongodb中将objectId用作数组

Javascript 在mongodb中将objectId用作数组,javascript,mongodb,Javascript,Mongodb,在javascript中,我们可以使用indexOf of of of在数组中找到特定字符串的位置 > ["aa","bb"].indexOf("bb") 1 例如,我想对mongodb中的ObjectID执行同样的操作 > ids= db.foo1.distinct('_id'); [ ObjectId("50d38d775f2b6c6e3393d6b0"), ObjectId("50d38d835f2b6c6e3393d6b1") ] >

在javascript中,我们可以使用indexOf of of of在数组中找到特定字符串的位置

> ["aa","bb"].indexOf("bb")
1 
例如,我想对mongodb中的ObjectID执行同样的操作

> ids= db.foo1.distinct('_id');
[
        ObjectId("50d38d775f2b6c6e3393d6b0"),
        ObjectId("50d38d835f2b6c6e3393d6b1")
]
> id0=db.foo1.findOne()._id
ObjectId("50d38d775f2b6c6e3393d6b0")

我正在寻找一种类似于ids.indexOf(id0)的方法,它将给出id0在ids中的位置。我可以将所有内容转换为字符串,然后使用indexOf,但我希望找到一种更简单的方法来实现这一点。

我不认为这是一个单行程序,您需要使用for循环:

for (var i=0; i<ids.length; i++) { 
    if (ids[i].equals(id0)) { ixOfId0 = i; break; } 
}

<代码> >(var i=0;i 如果列表没有频繁改变(或仅添加到),考虑只添加带有索引的文档:<代码> {i:0,R:ObjectId(‘……)}<代码>,其中<代码> i <代码>字段表示索引。

然后
db.foo1.find({'list.r':ObjectId('…')})
。通过查看结果文档中的字段
i
,结果将具有索引


但是,如果列表很长,这将始终是一个O(N)操作,因为它必须搜索每个数组元素以找到匹配项。您可能需要创建一个索引以提高性能。

我做了类似的事情。我希望有一个更聪明的方法来做到这一点。非常感谢。数据集太大了,我无法更改,但感谢您的评论您如何使用“索引”value?似乎MongoDB的数据结构可能不高效?此外,除非您将它们显式地放入数组中,否则无法保证顺序。使用Distinct不能保证特定的顺序(并且将
Distinct
\u id
一起使用没有意义,因为
\u id
必须是每个MongoDB唯一/不同的)。