在 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 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