根据mongodb查询条件查找文档

Posted

技术标签:

【中文标题】根据mongodb查询条件查找文档【英文标题】:finding the document based on mongodb query condition 【发布时间】:2022-01-20 03:11:27 【问题描述】:

"responseType" : "success", 
"sentPayload" : "\"regId\":\"AR34JK\",\"createdOn\":\"2021-12-16T11:17:28.640Z\"",
"sentUrl" : "DB", 
"tat" : 38.044
 

这是我的 JSON。如何编写基于sentPayload.createdOn条件的MongoDB查询?

我已经写了查询"sentPayload.createdOn":$gte:new Date("2021-12-16")

但这并没有返回文档。请帮助我

【问题讨论】:

将字段存储为 JSON 字符串被视为一种反模式。考虑将它们存储为适当的 BSON 对象。 【参考方案1】:

将字段存储为 JSON 字符串被视为一种反模式。考虑将它们存储为适当的 BSON 对象。

不过,从 MongoDB v4.4+ 开始,您可以使用 $function 执行 javascript JSON.parse 将 JSON 字符串转换回 JSON 对象。然后执行$toDatecreatedOn 字段转换回正确的日期字段。

db.collection.aggregate([
  
    $addFields: 
      sentPayload: 
        $function: 
          body: "function(sentPayload) return JSON.parse(sentPayload)",
          args: [
            "$sentPayload"
          ],
          lang: "js"
        
      
    
  ,
  
    $addFields: 
      "sentPayload.createdOn": 
        $toDate: "$sentPayload.createdOn"
      
    
  ,
  
    $match: 
      "sentPayload.createdOn": 
        $gte: ISODate("2021-12-16T00:00:00.000Z")
      
    
  
])

这是Mongo playground 供您参考。

【讨论】:

以上是关于根据mongodb查询条件查找文档的主要内容,如果未能解决你的问题,请参考以下文章

如何在特定字段 MongoDB 上查找 Distinct No of Document 并根据条件打印文档数?

MongoDB 查询技巧(3) - 数组操作

MongoDB文档查询操作

如何使用多个条件查找查询在 MongoDB 中指定字段?

mongoDB在java中怎么根据内嵌文档条件查询

怎么使用java操作mongodb更新整个文档