gpt4 book ai didi

mongodb - 在 MongoDB 中获取今天之前过期的文档

转载 作者:可可西里 更新时间:2023-11-01 09:50:37 25 4
gpt4 key购买 nike

我正在使用 MongoDB 2.6 并且我正在查询按过期日期过滤文档。我想知道哪些文件在今天之前过期了。我的持久数据代表出版物。

我已经进行了一些查询,但没有返回文档。我知道有很多文件满足这个条件。

我尝试了两个查询,但没有一个有效:

1.

{
"domain.ApplicationCase.fields.ExpireDate": { $gte : {
$currentDate: {
lastModified: true,
"cancellation.date": { $type: "timestamp" }
}}}
}

2.

{
"domain.ApplicationCase.fields.ExpireDate": { $gte : new Date()}
}

部分文件记录:

{
"_id" : "1234546",
"fields" : {
"Orchestration" : "default",
"Segmentation" : "PFI",
"MatchKey" : "1",
"UserID" : "001"
},
"domain" : {
"ApplicationCase" : {
"_id" : null,
"fields" : {
"ExpireDate" : "2015-11-13T13:47:26Z",
....

怎么了?

最佳答案

如果你想获取今天之前过期的记录,那么你应该使用$lte而不是$gte:

db.myCollection.find({
"domain.ApplicationCase.fields.ExpireDate": { $lte : new Date()}
})

更新:

所以您文档的核心问题是,domain.ApplicationCase.fields.ExpireDate 的值不是日期格式,而是简单的字符串格式。

因此,您首先需要将它们转换为日期,以便查询正常工作,因为您要将字符串与日期进行比较。

或许,您可以使用这样的代码将字符串转换为日期:

db.myCollection.find({
"domain.ApplicationCase.fields.ExpireDate": {$exists: true}
}).snapshot().forEach(function(record) {
var stringValue = record.domain.ApplicationCase.fields.ExpireDate;

db.myCollection.update({_id: record._id}, {$set: {
"domain.ApplicationCase.fields.ExpireDate": ISODate(stringValue)
}});
})

关于mongodb - 在 MongoDB 中获取今天之前过期的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34947907/

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