如何在 MongoDB 中匹配包含已提供数组的任何组合的数组字段?
为此,请使用 $nin 运算符和 $elemMatch 和 $not。为了理解这个概念,让我们用文档创建一个集合。创建带文档集合的查询如下 −
> db.combinationOfArrayDemo.insertOne({"StudentName":"Larry","StudentAge":21,"StudentFavouriteTechnicalSubject":["C","Java"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f77cc8d10a061296a3c58")
}
> db.combinationOfArrayDemo.insertOne({"StudentName":"Mike","StudentAge":23,"StudentFavouriteTechnicalSubject":["C++","Java"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f77dc8d10a061296a3c59")
}
> db.combinationOfArrayDemo.insertOne({"StudentName":"David","StudentAge":22,"StudentFavouriteTechnicalSubject":["Java"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f77f48d10a061296a3c5a")
}使用 find() 方法显示集合中的所有文档。查询如下 −
> db.combinationOfArrayDemo.find().pretty();
以下是输出 −
{
"_id" : ObjectId("5c7f77cc8d10a061296a3c58"),
"StudentName" : "Larry",
"StudentAge" : 21,
"StudentFavouriteTechnicalSubject" : [
"C",
"Java"
]
}
{
"_id" : ObjectId("5c7f77dc8d10a061296a3c59"),
"StudentName" : "Mike",
"StudentAge" : 23,
"StudentFavouriteTechnicalSubject" : [
"C++",
"Java"
]
}
{
"_id" : ObjectId("5c7f77f48d10a061296a3c5a"),
"StudentName" : "David",
"StudentAge" : 22,
"StudentFavouriteTechnicalSubject" : [
"Java"
]
}以下是用于匹配包含 MongoDB 中提供的数组的任何组合的数组字段的查询 −
> db.combinationOfArrayDemo.find({StudentFavouriteTechnicalSubject: {$not: {$elemMatch:
{$nin: ['C++', 'Java']}}}}).pretty();以下是输出 −
{
"_id" : ObjectId("5c7f77dc8d10a061296a3c59"),
"StudentName" : "Mike",
"StudentAge" : 23,
"StudentFavouriteTechnicalSubject" : [
"C++",
"Java"
]
}
{
"_id" : ObjectId("5c7f77f48d10a061296a3c5a"),
"StudentName" : "David",
"StudentAge" : 22,
"StudentFavouriteTechnicalSubject" : [
"Java"
]
}
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP