【发布时间】:2017-03-16 11:25:42
【问题描述】:
我有一个子文档,它是父文档的数组。 “设备”
在该数组中,我有一个属性是 Date 属性。
我想按这样的确定日期查找包含子子文档的父文档:
{
"_id" : ObjectId("5818fa596969a1339093a7da"),
"fecha" : ISODate("2016-11-01T05:00:00.000Z"),
"spot" : "5808e3926969a126c8365c94",
"devices" : [
{
"evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
"seenTimesCounter" : 0,
"category" : "PRE_PASAJERO",
"status" : "NO_CONECTADO"
},
{
"evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
"seenTimesCounter" : 0,
"category" : "PRE_PASAJERO",
"status" : "NO_CONECTADO"
},
{
"evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
"seenTimesCounter" : 0,
"category" : "PRE_PASAJERO",
"status" : "NO_CONECTADO"
},
{
"evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
"seenTimesCounter" : 0,
"category" : "PRE_PASAJERO",
"status" : "NO_CONECTADO"
},
{
"evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
"seenTimesCounter" : 0,
"category" : "PRE_PASAJERO",
"status" : "NO_CONECTADO"
},
{
"evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
"seenTimesCounter" : 0,
"category" : "PRE_PASAJERO",
"status" : "NO_CONECTADO"
}
]
}
我在 mongo shell 上试过这个(查询很好,它返回我想要的):
db.getCollection('spotMovimientos').aggregate([
{$match:{'devices.evaluationDate':ISODate("2016-11-01T20:26:00.000Z")}},
{$project: {
'devices':{$filter:{
input:'$devices',
as:'device',
cond: {$eq: ['$$device.evaluationDate', ISODate("2016-11-01T20:26:00.000Z")]}
}
} }
}
])
谁能详细说明一下?我需要帮助将其转换为 SPRING DATA
谢谢。
【问题讨论】:
标签: java spring mongodb spring-data spring-mongo