Здравствуйте, я хочу считать зону обзора документа, поле «SENDTIME» в массиве документов и условиеMongoDB документ счетчик массива поле с агрегатным
$and:[sendTime:{$gte:startTime},sendTime:{$lte:endTime}]
моих документы выглядят как этот
{
_id:ObjectId("5663c7d23d2a580bac21091b"),
message:[
{
msg:"1",
sendTime:ISODate("2015-12-08T09:34:53.128Z")
},
{
msg:"2",
sendTime:ISODate("2015-12-09T09:34:53.128Z")
}
....
]
},
{
_id:ObjectId("5663c7d23d2a580bac210912"),
message:[
{
msg:"aaa",
sendTime:ISODate("2015-12-06T09:34:53.128Z")
},
{
msg:"bbb",
sendTime:ISODate("2015-12-08T09:34:53.128Z")
}
....
]
}
Я изучаю метод из другого вопроса для подсчета поля.
db.chat.find().map(function(room){
room.message.map(function(msg){
if(msg.sendTime >= startTime&&msg.sendTime<=endTime)
queryTotalMsg++;
});
});
Я пытаюсь использовать агрегат, чтобы сделать то же самое
db.chat.aggregate([
$project:{
message:"$message.sendTime"
}
]);
, но я не знаю, как я могу рассчитывать SENDTIME с условием
Я не знаю, агрегат можно использовать для этот вопрос.
Спасибо за любой ответ.
HTTPS://docs.mongodb.org/v3.0/reference/operator/aggregation/group/ Отправлено –
@RahulChanglani yes Я пытаюсь использовать $ group для этого, но я понятия не имею, как сгруппировать, тогда я могу рассчитывать с условием – thiefjim
Использовать счетчик: {$ sum: 1} в $ group и поставить условие $ lte/$ gte на startTime/endTime в $ project для sendTime. –