我有FilePath1 = "C:\Main Folder\Folder A\"
ActiveWorkbook.SaveCopyAs FilePath1 & "\" & Filename & ".xls"
,其中包含以下字段:
collection
{
"_id": 1,
"latestActivity": "2015-12-23 12:30:00",
"activity": {
"activity1": "2015-12-23 12:25:00",
"activity2": "2015-12-23 12:20:00",
"activity3": "2015-12-23 12:30:00"
}
}
{
"_id": 2,
"latestActivity": "2015-12-23 12:34:00",
"activity": {
"activity1": "2015-12-23 12:22:00",
"activity2": "2015-12-23 12:27:00",
"activity3": "2015-12-23 12:34:00"
}
}
{
"_id": 3,
"latestActivity": "2015-12-23 12:45:00",
"activity": {
"activity1": "2015-12-23 12:45:00",
"activity2": "2015-12-23 12:23:00",
"activity3": "2015-12-23 12:26:00"
}
}
包含其他三项活动的最新时间戳。
现在我遇到的问题是我需要首先比较第二个和第三个活动,获取最新的活动,然后根据它对收集进行排序。
因此,排序顺序为:1,3,2因为1:actvity 1,3:活动3,2:活动2
是否可以使用某些查询来执行此操作?
答案 0 :(得分:1)
不接触性能主题您正在寻找的查询是这样的:
db.collection.aggregate([ {
$project: {
"latestActivity":1,
"activity.count1": 1,
"activity.activity1": 1,
"activity.activity2": 1,
"activity.activity3": 1,
"activity.sort": {
$cond: {
if: {
$gt: [
"$activity.activity3",
"$activity.activity2"
]
},
then: "$activity.activity3",
else: "$activity.activity2"
}
}
}
},
{
$sort: {
"activity.sort": 1
}
},
{
$project: {
"latestActivity":1,
"activity.activity1": 1,
"activity.activity2": 1,
"activity.activity3": 1
}
}
])
您可以使用activity.sort
表达式比较$cond
和activity2
来创建一个临时字段,以便在第一个投影(activity3
)中进行排序,并返回更大的,然后您创建一个省略activity.sort字段的新投影。