如何解决根据时间过滤记录时出错
我的收藏集中没有给用户记录。对于该记录,插入时间为toISOString
格式。我正在尝试使用查找查询忽略超过3天的记录,但出现一些错误。
错误:查询错误:无法解析查询内容:无效字符“。”在数组元素之后
myRecord:
[
{
"_id": "1","name": "user1","data":"some data","insertionTime": "2020-11-10T10:18:27.158Z",},{
"_id": "2","data":"some data"
"insertionTime": "2020-11-10T14:18:27.158Z",{
"_id": "3","insertionTime": "2020-11-06T14:18:27.158Z",}
]
预期输出:
[
{
"_id": "2","insertionTime": "2020-11-10T14:18:27.158Z",}
]
我尝试过查询:
db.collection.find({ $expr: { $and: [ { $eq: ['$name','user1'] },{ $gte: [ { $dateFromString: { dateString: '$insertionTime' } },new Date(Date.now() - 3 * 24 * 60 * 60 * 1000),],});
有人可以帮我解决这个问题吗?
解决方法
此行new Date(Date.now() - 3 * 24 * 60 * 60 * 1000)
您必须使用$subtract进行减法。
db.collection.find({
$expr: {
$and: [
{
$eq: [
"$name","user1"
]
},{
$gte: [
{
$dateFromString: {
dateString: "$insertionTime"
}
},{
"$subtract": [
new Date(Date.now()),259200000
]
}
]
}
]
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。