我正在尝试聚合一批文件.我想要推送的文件中有两个字段.但是,假设它们是"_id"和"A"字段,我只想要$ push"_id"和"A"如果"A"是$ gt 0.
我尝试了两种方法.
第一.
db.collection.aggregate([{
"$group":{
"field": {
"$push": {
"$cond":[
{"$gt":["$A", 0]},
{"id": "$_id", "A":"$A"},
null
]
}
},
"secondField":{"$push":"$B"}
}])
Run Code Online (Sandbox Code Playgroud)
但这会将空值推到"字段",我不想要它.
第二个.
db.collection.aggregate([{
"$group":
"field": {
"$cond":[
{"$gt",["$A", 0]},
{"$push": {"id":"$_id", "A":"$A"}},
null
]
},
"secondField":{"$push":"$B"}
}])
Run Code Online (Sandbox Code Playgroud)
第二个根本不起作用......
有没有办法在其他情况下跳过$ push?
添加:
预期文件:
{
"_id":objectid(1),
"A":2,
"B":"One"
},
{
"_id":objectid(2),
"A":3,
"B":"Two"
},
{
"_id":objectid(3),
"B":"Three"
}
Run Code Online (Sandbox Code Playgroud)
预期产出:
{
"field":[
{
"A":"2",
"_id":objectid(1)
},
{
"A":"3",
"_id":objectid(2)
},
],
"secondField":["One", "Two", "Three"]
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个计时器来计算我的服务器完成请求所需的时间,我希望计时器在响应的最后一个字节发送后停止.
我发现http服务器只会在处理函数返回后发送响应.
有没有办法在发送响应后添加回调?
或者有更好的方法来计算从请求的第一个字节到响应的最后一个字节字节发送的时间吗?