如何在 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"
   ]
}

更新時間: 30-7 月-2019

204 瀏覽

開啟你的事業

透過完成課程獲取認證

開始
廣告