【问题标题】:How to delete the document based on ObjectId (_id)如何根据 ObjectId (_id) 删除文档
【发布时间】:2018-01-22 11:14:28
【问题描述】:

如何编写一个 MongoDB shell 查询来返回特定日期之后创建的所有对象的文档?

像这样的集合:

{
"_id" : ObjectId("59918c9014450171039b7e1f"),
"cont_id" : "59918c9014450171039b7e1d",
"systemdate" : ISODate("2017-07-25T00:09:00.567Z"),
}

db.itemtable.count({"systemdate" : { $gte: ISODate("2017-07-25T00:00:00.000Z")}})

返回 - 15210

db.itemtable.count({'_id': {'$gt' : ObjectId("59918c9014450171039b7e1f")}})

返回 - 987652

谢谢! 婆罗洲

【问题讨论】:

  • 不要使用 cont({.....}) 使用 find({"systemdate" : { $gte: ISODate("2017-07-25T00:00:00.000Z")}})

标签: mongodb mongodb-query mongodb-shell


【解决方案1】:

db.itemtable.find({"systemdate" : { $gte: ISODate("2017-07-25T00:00:00.000Z")}}).count() 返回这些文档的计数。

如果您想将光标移至这些文档,请使用 find db.itemtable.find({"systemdate" : { $gte: ISODate("2017-07-25T00:00:00.000Z")}})

【讨论】:

  • 谢谢你们!我们都知道 ObjectId 包含当前时间戳以及其他一些详细信息,任何找出 ObjectId 大于 (>) "some id" 的方法,其中列出了在特定时间戳 db.itemtable.count({'_id': {'$gt' : ObjectId("59918c9014450171039b7e1f")}}) 之后创建的 ObjectId
  • 获取一些时间戳,因为 Unix 时间戳 08/16/2017 @ 8:48am (UTC) 是 1502873284,转换为 0x599406C4。然后你只需`db.data.find({_id:{$gt:ObjectId("599406c40000000000000000")}})`
猜你喜欢
  • 2013-06-22
  • 2015-01-16
  • 2015-09-17
  • 2020-03-30
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
相关资源
最近更新 更多