簡體   English   中英

在mongodb中使用objectId作為數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM