Я борюсь с MongoDbMongoDB документ вложен документ фильтрации
У меня есть коллекция документов с одного документа структурированы следующим образом
{
"_id": { "$oid": "588a931d5c98fe0f3f84d93f" },
"name": "Michele",
"type": "F",
"category": "G",
"meta":{
"code": "113835667",
"updated": {"$date": "2017-02-07T00:00:00.000Z"},
"since": {"$date": "2013-11-07T23:00:00.000Z"}
},
"data": [
{
"date": {"$date": "2013-11-07T23:00:00.000Z"},
"close": 12.23
}
... // removed
{
"date": {"$date": "2017-02-07T00:00:00.000Z"},
"close": 15.22
}
]
}
Что мне нужно для достижения возвращает документ с соответствующими _id но отфильтруйте из массива данных документы с датой не внутри указанного диапазона времени.
это то, что я попытался так как теперь
let id; //[DocumentId]
let from; //[Date]
let to; //[Date]
collection.aggregate([
{ $match: { _id: { $eq: id } } },
{ $unwind: '$data' },
{ $match: { 'data.date': { $gte: from, $lte: to } } },
{ $group: { _id: '$_id',
data: { $push: { date:'$data.date', close: '$data.close' } } } }
], ...);
проблема такого подхода заключается в том, что документ я возвращаю содержит только _ID и данные свойства [результат фильтрации данных в порядке] в то время как мне нужно, чтобы вернуть полный набор доступных свойств.
Предложения очень ценятся!
Какова ваша версия сервера MongoDB и выполняется ли операция агрегата из оболочки mongo? – chridam
@chridam это говорит версия mongod: 3.2.11 и нет Я использую драйвер tha nodejs «mongodb»: «^ 2.2.6», – Gavello
Возможный дубликат [Получить только запрошенный элемент в массиве объектов в коллекции MongoDB] (http : //stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array-in-mongodb-collection) – Veeram