在 MongoDB 中的指定陣列中搜尋

Shihab Sikder 2022年7月18日
在 MongoDB 中的指定陣列中搜尋

$in 運算子在你提供的陣列中搜尋。例如,如果你給出一個陣列並希望在 MongoDB 集合中搜尋一個或多個匹配的元素,那麼你可以使用 $in

使用 $in 運算子在 MongoDB 中搜尋指定的陣列

$in 運算子查詢欄位值等於所提供陣列中的任何值的文件。使用以下原型來指定 $in 表示式。

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

例如,假設你有以下集合。

{
    _id:1,
    name: "John",
    age: 30
},
{
    _id:2,
    name: "Alex",
    age: 23
},
{
    _id:3,
    name: "Murphy",
    age: 25
},
{
    _id:4,
    name: "Alice",
    age: 28
},

現在,你想檢視 _id = 2,3,4 的文件。因此,命令將如下所示。

db.collection.find( {_id: { $in: [2, 3, 4] } } );

或者,你也可以傳送一個陣列作為引數。當你開發應用程式或網站時,它會很有用。

let list=[2, 3, 4]
db.collection.find( { _id:{ $in: list} } )

在使用 JavaScript promises 時,這種方法很有用。

為避免錯誤,你應該注意 ObjectId_id 預設由 MongoDB 提供,_id 的型別是 ObjectId

因此,在將陣列傳入 $in 的引數時,最好將每個整數 id 轉換為 ObjectId,如下所示。

{ "_id" : { $in : [ObjectId('2'),ObjectId('3'),ObjectId('4')] } }

這種方法更準確,因為你通過引數提供了 _id 的確切資料型別。 $in 也可用於 updateManyupdateOnedeleteOnedeleteMany 操作。

要了解有關 $in 運算子的更多資訊,請訪問此處的官方頁面。

作者: Shihab Sikder
Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website