如何将多个标准传递给 Criteria.elemMatch() Api?

dog*_*oga 5 mongodb aggregation-framework spring-data-mongodb

我有一种情况,我想在ApielemMatch提供的方法调用中提供 3 个条件org.springframework.data.mongodb.core.query.Criteria

Inventory 集合看起来像这样 -

{
    "_id" : "H-P3NCDST45"
    "booking" : [
    {
        "updateDate" : ISODate("2018-01-29T13:32:03.789Z"),
        "status" : "STARTED",
        "message" : "abc"
    },
    {
        "updateDate" : ISODate("2018-01-29T13:32:04.789Z"),
        "status" : "PENDING",
        "message" : "def"
    },
    {
        "updateDate" : ISODate("2018-01-29T13:33:04.789Z"),
        "status" : "CONFIRMED",
        "message" : "abc"
    }
]
}
Run Code Online (Sandbox Code Playgroud)

我想做类似下面的查询。从inventory集合中获取所有文档,这些文档在booking数组中至少有一个嵌入文档,其状态为“STARTED”并且updateDate介于<start><end>日期之间,即从给定<start><end>日期之间开始/启动的库存中获取所有预订。

db.inventory.find({"booking": { $elemMatch: { status: "STARTED",updateDate: { $gte: ISODate("2018-01-01T14:04:34.447Z"), $lte: ISODate("2018-01-20T14:04:34.447Z")}}}})
Run Code Online (Sandbox Code Playgroud)

标准 Api 提供criteria.elemMatch(Criteria c). 如何在此elemMatch(c)方法调用中传递多个条件?

use*_*814 6

你可以试试

Criteria criteria = 
   Criteria.where("booking").
   elemMatch(
      Criteria.where("status").is("STARTED").
      and("updateDate").gte(date1).lte(date2)
   );
Run Code Online (Sandbox Code Playgroud)