根据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 对象。然后执行$toDate
将createdOn
字段转换回正确的日期字段。
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查询条件查找文档的主要内容,如果未能解决你的问题,请参考以下文章