Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.7k views
in Technique[技术] by (71.8m points)

mongodb - mongo db query for array inside array

I have a collection with such documents, and i need to find out all documents which has dispatchDateTime less than dispatchDetails.deliveryInformation.eventDate

{
  "trackingCode":"T1",
  dispatchDetails: [
    {
      dispatchDateTime: "2020-12-31T22:30:02.000Z",
      deliveryInformation: [
        {
          eventDate: "2020-05-15T23:46:00.000Z",
          eventCode: "E1"
        },
        {
          eventDate: "2020-05-15T23:46:00.000Z",
          eventCode: "E2"
        },
        {
          eventDate: "2020-05-15T23:46:00.000Z",
          eventCode: "E3"
        }
      ]
    }
  ]
},
{
  "trackingCode":"T2",
  dispatchDetails: [
    {
      dispatchDateTime: "2020-12-31T22:30:02.000Z",
      deliveryInformation: [
        {
          eventDate: "2020-12-31T23:46:00.000Z",
          eventCode: "E1"
        },
        {
          eventDate: "2020-12-31T23:46:00.000Z",
          eventCode: "E2"
        },
        {
          eventDate: "2020-12-31T23:46:00.000Z",
          eventCode: "E3"
        }
      ]
    }
  ]
},
{
  "trackingCode":"T3",
  dispatchDetails: [
    {
      dispatchDateTime: "2020-12-31T22:30:02.000Z",
      deliveryInformation: [
        {
          eventDate: "2020-05-12T23:46:00.000Z",
          eventCode: "E1"
        },
        {
          eventDate: "2020-05-12T23:46:00.000Z",
          eventCode: "E2"
        },
        {
          eventDate: "2020-05-12T23:46:00.000Z",
          eventCode: "E3"
        }
      ]
    }
  ]
}```

Any ideas?
In the above sample documents that query will return two documents with trackingCode T1 and T3

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try with following query:-

db.collection.find({"dispatchDetails":{$elemMatch:{"dispatchDateTime":{$lt:"deliveryInformation.$.eventDate"}}}}})

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...