如何透過 MongoDB 中子文件的條件查詢文件?


我們首先建立一個帶有文件的集合 -

> db.demo394.insertOne(
...    {
...
...       details: [
...       {
...          _id: '1',
...          startDate: '2018-01-11T07:00:00.000Z',
...          endDate: '2019-01-12T07:59:59.999Z'
...       },
...       {
...          _id: '2',
...          startDate: '2019-01-21T07:00:00.000Z',
...          endDate: '2020-01-04T07:59:59.999Z'
...       }
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5e716817aa3ef9ab8ab202")
}

在集合中顯示所有文件,使用 find() 方法 -

> db.demo394.find();

將生成以下輸出 -

{
   "_id" : ObjectId("5e5e716817aa3ef9ab8ab202"), "details" : [
      { "_id" : "1", "startDate" : "2018-01-11T07:00:00.000Z", "endDate" : "2019-01-12T07:59:59.999Z" },
      { "_id" : "2", "startDate" : "2019-01-21T07:00:00.000Z", "endDate" : "2020-01-04T07:59:59.999Z" }
   ]
}

以下是如何透過子文件中的條件查詢文件 -

> db.demo394.find({
...    $expr: {
...       $let: {
...          vars: { "d": { $arrayElemAt: [ "$details", -1 ] } },
...          in: { $eq: [ "$$d.endDate", "2020-01-04T07:59:59.999Z" ] }
...       }
...    }
... })

將生成以下輸出 -

{
   "_id" : ObjectId("5e5e716817aa3ef9ab8ab202"), "details" : [
      { "_id" : "1", "startDate" : "2018-01-11T07:00:00.000Z", "endDate" : "2019-01-12T07:59:59.999Z" },
      { "_id" : "2", "startDate" : "2019-01-21T07:00:00.000Z", "endDate" : "2020-01-04T07:59:59.999Z" }
   ] 
}

更新於: 02-04-2020

165 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始
廣告