У меня есть коллекция с полем Date:
{
"_id" : ObjectId("5b92b359ddceef5b24502834"),
"dateTimeGMT" : ISODate("2018-08-22T09:29:25.000Z"),
yada, yada, yada
}
Я пытаюсь найти по дате на этапе агрегации $ match с помощью функции ParseExtJSONArray mongo-go-driver.(Я знаю, как сделать это с * bson.Array напрямую. Я спрашиваю, чтобы я знал, как правильно сделать это с ParserExtJSONArray или если я столкнулся с ограничением.)
IУпростил этот пример и подтвердил, что он не соответствует приведенному выше документу.
pipeline, err := bson.ParseExtJSONArray(`[
{ "$match": { "dateTimeGMT.$date":"2018-08-22T09:29:25.000Z" } }
]`)
cursor, err := receivedFromResponseQueue.Aggregate(ctx, pipeline)
Следующее не работает в оболочке mongo.(Не удивительно, потому что он автоматически конвертируется в формат ISODate ())
db.getCollection('received_from_response_queue').aggregate([
{ "$match": { "dateTimeGMT.$date":"2018-08-22T09:29:25.000Z" } }
])
Но это работает в оболочке mongo.
db.getCollection('received_from_response_queue').aggregate([
{ "$match": { "dateTimeGMT": ISODate("2018-08-22T09:29:25.000Z") } }
])
Но это возвращает пустой массив в "pipe",(Поскольку ParseExtJSONArray не обрабатывает JavaScript)
pipeline, err := bson.ParseExtJSONArray(`[
{ "$match": { "dateTimeGMT":ISODate("2018-08-22T09:29:25.000Z") } }
]`)
Поскольку он затем использует пустой массив, он перенастраивает все документы в коллекции.Интересно, что в документе, который мы пытаемся сопоставить, дата форматируется по-разному.
{
"_id" : { "$oid" : "5b92b359ddceef5b24502834" },
"dateTimeGMT" : { "$date" : "2018-08-22T05:29:25-04:00" },
yada yada yada
}
Но это тоже не совпадает.
pipeline, err := bson.ParseExtJSONArray(`[
{ "$match": { "dateTimeGMT.$date":"2018-08-22T05:29:25-04:00" } }
]`)
cursor, err := receivedFromResponseQueue.Aggregate(ctx, pipeline)
И это не работает вОболочка монго.
db.getCollection('received_from_response_queue').aggregate([
{ "$match": { "dateTimeGMT.$date":"2018-08-22T05:29:25-04:00" } }
])
Есть идеи?