Consultar por fechas por бразильская саванна ООН dentro de un array подставляют múltiples objetos

En una colección, танго documentos Комо éste:

{
  "_id" : "ARJ05542",
  "name" : "aaaaa",
  "offers" : [{
      "product-sku" : "0698615096855",      
      "shop-id" : "2003",
      "date_modified" : ISODate("2016-11-29T09:31:42.891Z"),      
    }, {
      "product-sku" : "0698615096855",      
      "shop-id" : "2007",
      "date_modified" : ISODate("2016-12-06T15:15:22.242Z"),
    }]
}

Necesito una query que me permita obtener todos aquellos objetos dentro del array offers, DOS пещеры cuya fecha de modificación esté fechas.

Он tratado de conseguirlo mediante la siguiene consulta, pero не я devuelve resultados:

db.TL01_A.aggregate([

/* with offers*/
{"$match" : 
    {
        "offers" : {"$exists" : true}
    }
},
/*unwind by offers*/
{"$unwind" : "$offers"},

/* group by offers*/

{
    "$group" : 
        {
            "_id" : "$offers"
        }

},
/* sort */
{"$sort" : {"_id" : 1}},
/* modified between dates*/

{"$match" : 
    {

        "$and" : [
            {"date_modified" : {"$gte" : { "$date" : "2016-11-03T12:18:48.477Z"}}}, 

            {"date_modified" : {"$lt" : { "$date" : "2016-12-25T12:18:48.477Z"}}}]

    }
},


/* skip */
{"$skip" : 0},
/* limit */
{"$limit" : 50}
],
{allowDiskUse : true}
)

En el momento en el que pongo la consulta por fecha siempre я devuelve cero resultados.

2
задан 26.12.2016, 12:36
0 ответов

Даты хранятся в числовом формате. Однако, query ты это реализуешь с string. Ты был бы должен обращать дату в объект с ISODate()

Внутри query, условие было бы:

{
    "$match" : {
        "$and" : [ 
            {
                "date_modified" : {
                    "$gte" : { 
                        "$date" : ISODate("2016-11-03T12:18:48.477Z")
                    }
                }
            }, {
                "date_modified" : {
                    "$lt" : {
                        "$date" : ISODate("2016-12-25T12:18:48.477Z")
                    }
                }
            }
        ]
    } 
},
4
ответ дан 03.12.2019, 18:33