在 MongoDB 中的指定陣列中搜尋
Shihab Sikder
2022年7月18日
$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
也可用於 updateMany
、updateOne
、deleteOne
、deleteMany
操作。
要了解有關 $in
運算子的更多資訊,請訪問此處的官方頁面。
作者: Shihab Sikder