gpt4 book ai didi

node.js - 有没有办法使用聚合从 Mongoose 的 ObjectId 获取日期?

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:32 25 4
gpt4 key购买 nike

我有Users集合。 设备都在对象数组中。

[{
"_id" : ObjectId("5c66a979e109fe0f537c7e37"),
"devices": [{
"dev_token" : "XXXX",
"_id" : ObjectId("5ccc0fa5f7778412173d22bf")
}]

},{
"_id" : ObjectId("5c66b6382b18fc4ff0276dcc"),
"devices": [{
"dev_token" : "XXXX",
"_id" : ObjectId("5c93316cc33c622bdcfaa4be")
}]

}]

我需要在devices中添加新字段date来查询文档,例如

"devices": [{
"dev_token" : "XXXX",
"_id" : ObjectId("5c93316cc33c622bdcfaa4be"),
"date": ISODate("2012-10-15T21:26:17Z")
}]
来自 devices._id.getTimestamp() 的

date

我尝试使用聚合这个,不知道如何使用getTimestamp()

db.getCollection('users').aggregate([ {
"$unwind": "$devices"
}, {
"$group": {
"_id": "$_id",
"devices": {
"$push": "$devices._id.getTimestamp()"
}
}
}])

我使用$devices._id.getTimestamp(),这可能是错误..这是我如何处理这个问题..感谢您的帮助

最佳答案

您可以使用$toDate从 _id 字段获取时间戳。

unwind 阶段之后将 date 字段添加到每个 devices 元素,使用 $addFields

试试这个:

db.getCollection('users').aggregate([ {
"$unwind": "$devices"
},{
$addFields : {
"devices.date": { $toDate: "$_id" }
}
}, {
"$group": {
"_id": "$_id",
"devices": {
"$push": "$devices"
}
}
}])

您可以通过Mongo Playground查看结果(只需按“运行”)

关于node.js - 有没有办法使用聚合从 Mongoose 的 ObjectId 获取日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57220561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com