我的文件看起来像这样:
{
"_id" : ObjectId( "5191651568f1f6000282b81f" ),
"updated_at" : "2013-05-16T09:46:16.199660",
"activities" : [
{
"worker_name" : "image",
"completed_at" : "2013-05-13T21:34:59.293711"
},
{
"worker_name" : "image",
"completed_at" : "2013-05-16T07:33:22.550405"
},
{
"worker_name" : "image",
"completed_at" : "2013-05-16T07:41:47.845966"
}
]
}
我想只查找那些updated_at时间大于 last activities.completed_at时间(数组按时间顺序排列)的文档
我目前有这个,但它匹配任何活动[]。completed_at
{
"activities.completed_at" : {"$gte" : "updated_at"}
}
谢谢!
更新
好吧,我有不同的工人,每个人都有自己的“completed_at”。我必须按如下方式反转活动:
activities: { image :
last : {
completed_at: t3,
},
items: [
{completed_at: t0},
{completed_at: t1},
{completed_at: t2},
{completed_at: t3},
]
}
并使用此查询:
{
"activities.image.last.completed_at" : {"$gte" : "updated_at"}
}
答案 0 :(得分:1)
假设您不知道自己有多少活动(如果您总是有3个活动,例如使用activities.3.completed_at
位置运算符,则很容易)并且因为没有$last
位置运算符,简短的回答是你不能有效地做到这一点。
插入活动后,我会更新记录的updated_at
值(或其他字段)。然后它就变成了一个小问题。