[英]Using objectId as an array in mongodb
在javascript中,我們可以使用indexOf找到數組中特定字符串的位置
> ["aa","bb"].indexOf("bb")
1
我想對mongodb中的objectIds做同樣的事情
> ids= db.foo1.distinct('_id');
[
ObjectId("50d38d775f2b6c6e3393d6b0"),
ObjectId("50d38d835f2b6c6e3393d6b1")
]
> id0=db.foo1.findOne()._id
ObjectId("50d38d775f2b6c6e3393d6b0")
我正在尋找一種方法來執行類似ids.indexOf(id0)的操作 ,它將在id中為我提供id0的位置。 我可以將所有內容轉換為字符串然后使用indexOf但我希望找到一種更簡單的方法來執行此操作。
我不認為這有一個單行,你需要使用for循環:
for (var i=0; i<ids.length; i++) {
if (ids[i].equals(id0)) { ixOfId0 = i; break; }
}
如果列表不經常更改(或僅添加到列表中),請考慮僅添加帶索引的文檔: { i: 0, r: ObjectId('....') }
,其中i
字段表示索引。
然后db.foo1.find( { 'list.r' : ObjectId('...') })
。 通過查看結果文檔中的字段i
,結果將具有索引。
但是,如果列表很長,這總是一個O(N)操作,因為它必須搜索每個數組元素以找到匹配。 您可能需要創建索引以提高性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.