相关疑难解决方法(0)

Mongodb:从mongo shell中的ObjectId执行日期范围查询

我有一个看起来像这样的集合:

{
  _id: ObjectId("50a68673476427844b000001"),
  other fields
}
Run Code Online (Sandbox Code Playgroud)

我想做一个范围查询来查找两个日期之间的记录.我知道我可以从mongo shell var中的ObjectId获取日期:

var aDate = ObjectId().getTimestamp()
Run Code Online (Sandbox Code Playgroud)

但是目前还没有一种方法(据我现在可以搞清楚)创建一个仅包含时间戳部分的ObjectId - 我认为我的理想解决方案是无功能的mongo shell代码将是:

var minDate = ObjectId(new Date("2012-11-10"));
var maxDate = ObjectId(new Date("2012-11-17"));
Run Code Online (Sandbox Code Playgroud)

使用minDate和MaxDate作为范围值.

有没有办法在SHELL中做到这一点 - 我对一些驱动程序产品不感兴趣.

mongodb mongodb-shell

21
推荐指数
2
解决办法
1万
查看次数

mongodb 罗盘查询,对象Id在日期范围内

我正在尝试使用指南针在字段上执行日期范围查询_id。我已经使用以下过滤器尝试了在这里找到的内容:

{_id: { $gte: ObjectId.fromDate(new Date('2019-01-01')) } }
Run Code Online (Sandbox Code Playgroud)

我缺少什么?我想获取从某个日期开始的所有文档的列表(在本例中是从 2019 年 1 月 1 日至今)。不幸的是,文档字段中没有时间戳,因此我需要从对象 ID 中提取它。

mongodb mongodb-compass

10
推荐指数
2
解决办法
3万
查看次数

查找在指定日期之前创建的所有对象

Mongo有一个很好的功能,可以在创建文档时告诉您.

ObjectId("53027f0adb97425bbd0cce39").getTimestamp() = ISODate("2014-02-17T21:28:42Z")
Run Code Online (Sandbox Code Playgroud)

我怎样才能找到2014年2月10日之前创建的所有文档?搜索周围但似乎不会出现这个问题.任何帮助表示赞赏!谢谢!

mongodb pymongo

7
推荐指数
1
解决办法
5535
查看次数

如何从时间戳转换为 Mongo ObjectID

我知道我们可以使用getTimestamp()从 ObjectId 中检索时间戳,但是有没有办法从时间戳生成 ObjectId?

更具体地说,如果我有的输入,那么我想将其转换为Mongo ObjectID以在 db 中查询,我该怎么做?

timestamp mongodb

6
推荐指数
2
解决办法
1万
查看次数

MongoDB 查找今天的记录

在 Mongo shell 中,如何过滤今天(或特定日期)添加的记录?我没有新记录时间戳的特定字段,但我想它可以从 ObjectID 恢复。

mongodb

6
推荐指数
1
解决办法
1万
查看次数

我应该在“ _id”中使用时间戳吗?

我需要监视记录的创建时间,以便进一步查询和修改。

我想到的第一件事是为文档提供一个“ createDateTime”字段,默认值为“ new Date()”,但是Mongodb说文档_id嵌入了时间戳,并且id是在创建文档时生成的,因此为该字段添加新字段听起来很虚构。

很多次,我已经看到人们为他们的数据设置一个“ createDateTime”,但我不知道他们是否知道mongodb的_id的详细信息。

我想知道应该将_id用作“ createDateTime”字段吗?最佳做法是什么?以及利弊。

感谢您的任何提示。

timestamp mongodb

5
推荐指数
1
解决办法
1511
查看次数

查询mongodb以返回今天创建的文档

我怎样才能编写过滤器,这会导致今天创建的文档.我知道ObjectId有时间戳.我试过这个:

db.doc.find({_id : { $gte : ObjectId().getTimestamp().getTime() }}
Run Code Online (Sandbox Code Playgroud)

我能写吗?

db.doc.find({'_id.getTimestamp().getTime()' : { $gte : ObjectId().getTimestamp().getTime() }}
Run Code Online (Sandbox Code Playgroud)

mongodb nosql

4
推荐指数
1
解决办法
2875
查看次数

如何从mongo shell中的Date值创建ObjectId?

我想在mongo shell中创建一个新的ObjectId但是在过去的Date中创建一个新的ObjectId,以便在过去模拟该文档的创建.这与ObjectId 的getTimestamp()函数相反(即给出一个时间戳,获取一个在调用时返回该时间戳的ObjectId getTimestamp)

任何想法如何做到这一点?

javascript mongodb mongo-shell

2
推荐指数
1
解决办法
1665
查看次数

删除id中时间戳记录的mongo

这个问题很受欢迎,但也有一些微妙的变化。我需要在创建它时使用其_id. 我没有任何date,createdAt字段,因为我看到mongo 使用它_id作为createdAt 时间戳。

如何使用此要点删除录制的内容(例如 30 天前创建的内容) ?

const date = new Date();
const daysToDeletion = 30;
const deletionDate = new Date(date.setDate(date.getDate() - daysToDeletion));

const db = <your-database>

db.messages.remove({_id : {$lt : deletionDate}});
Run Code Online (Sandbox Code Playgroud)

上面返回一个CastError

什么会起作用,正如我所说,我没有一个createdAt字段:

db.messages.remove({createdAt : {$lt : deletionDate}});
Run Code Online (Sandbox Code Playgroud)

mongodb

1
推荐指数
1
解决办法
3284
查看次数