如何解决使用$ lookup仅返回特定时间段内的文档
我正在尝试执行一个$ lookup来连接两个具有discord_id字段的集合(用户和运行,一对多关系)。但是,与此同时,我尝试从运行集合中筛选出不在一定时间内的所有文档。 我试图使用十六进制的ObjectId字符串来实现$ match:$ gte,如下所示,但是还没有得到它来返回其中包含任何对象的数组。
pipeline[
{ $match: { $gte: { _id: ObjectId("5f9506500000000000000000") } } }
]
最终结果应具有一个User对象,该User对象的数组中包含许多运行对象。运行对象只能在特定时间范围内。
解决方法
尝试一下:
您可以使用$toDate
从time
获取ObjectId
因子。我介绍了一些字段,例如createDate
和bool
。您可以在最后使用$project
阶段将其隐藏。
db.collection.aggregate([
{
"$set": {
"createDate": {
$toDate: "$_id"
}
}
},{
"$set": {
bool: {
"$gt": [
"$createDate",{
$toDate: ObjectId("5ab9c3da31c2ab715d421285")
}
]
}
}
},{
"$match": {
bool: true
}
}
])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。