我已经使用数组概念创建了一个集合。
use test
db.time.insert({ "employeeid" : 1, "timing" : [{var : "temp", timein: new Date(), timeout: new Date()}]})
创建文档后,我在5分钟后更新了超时时间。
db.time.update({"employeeid" : 1, "timing.var" : "temp"},{$set : {"timing.$.timeout" : new Date()}})
我有两个查询。
1)我可以仅在timein,timeout fileds中存储时间(hh:mm:ss)吗?
2)我如何减去子文档超时值?
答案 0 :(得分:0)
这是我的需要:
1)我可以仅在timein,timeout fileds中存储时间(hh:mm:ss)吗?
不,你不能。日期类型字段将始终是完整日期。但是,在阅读时,您可以选择仅阅读hh mm和ss部分 喜欢:
d.getHours()
d.getMinutes()
但是听起来太复杂了。 我能建议的最好的办法是使用毫秒。用户以timeInMillies而不是Date类型存储和读取特定时间。 mongo中有一个NumberLong字段,可以轻松比较,加,减,并且在阅读时可以将其转换回Date。
2)我如何减去子文档超时值?
如果要使用毫秒来消除1000的除数,我会在几秒钟内改变
db.time.aggregate([
{
$unwind:"$timing"
},
{
$project:{
diff:{
$divide:[
{
$subtract:[
"$timing.timeout",
"$timing.timein"
]
},
1000
]
}
}
}
])