Mongo 数据库:查询嵌套 json

Mongo db : query on nested json

示例 json 对象:

{ "_id" : ObjectId( "55887982498e2bef5a5f96db" ),
  "a" : "x",
  "q" : "null",
  "p" : "",
  "s" : "{\"f\":{\"b\":[\"I\"]},\"time\":\"fs\"}" }

需要时间 = fs 的所有文件 我的查询:

{"s":{"time" : "fs"}}

超过 returns 零个产品,但事实并非如此。

这里有两个问题。首先 s 显然是一个字符串,因此您的查询无法工作。您可以按如下方式使用 $regex,但效率不高:

{s: {$regex: '"time"\:"fs"'}}

我建议将 s 字段转换为适当的文档。您可以使用 JSON.parse 来做到这一点。可以使用 db.foo.find().snapshot().forEach 根据当前值更新文档。有关详细信息,请参阅 this answer

第二个问题是您的查询完全错误。要匹配 time 字段,您应该使用点符号:

{"s.time" : "fs"})