我试图获取文档数组的第一个元素。如您所见,“ primera”字段为空:
{
"_id" : ObjectId("5bb164d71d2eef353d292cab"),
"asunto" : {
"id" : "5b48bb7251b997b3cc23b9e4",
"abreviatura" : "AF",
"titulo" : "Alarma Fuente",
"descripcion" : "Alarma generada por un evento de energía en la fuente."
},
"tiempos" : [
{
"cola" : "5b55f8a351b9979f1e417b43",
"inicio" : 1538352343,
"fin" : 1538353214,
"total" : 871,
"usuario" : {
"id" : 0,
"usuario" : "MOICA"
}
}
],
"pFecha" : "2018-09-30",
"primera" : [ ]
}
我的查询是:
var start = ISODate("2018-10-01T00:00:00.000Z");
var end = ISODate("2018-10-01T23:59:59.000Z");
db.moicaTickets.aggregate([
{ $match : { asunto:{$exists:true}, asunto: {$ne:null},tiempos:{$exists:true}, tiempos: {$ne:null},creado:{$exists:true}, "creado.lastEvent_tc": { $gt: start, $lt: end } }},
{ $project: { pFecha: { $dateToString: { format: "%Y-%m-%d", date: "$creado.lastEvent_tc", timezone: "-03:00" } }, asunto: 1, tiempos: 1, primera: "$tiempos.0"}}
]).pretty()
谢谢!
答案 0 :(得分:1)
您可以使用$arrayElemAt
从数组中获取任何索引元素
db.collection.aggregate([
{ "$project": {
"pFecha": {
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$creado.lastEvent_tc",
"timezone": "-03:00"
}
},
"asunto": 1,
"tiempos": 1,
"primera": { "$arrayElemAt": ["$tiempos",0]}
}}
])