Mongodb Mongo db:对嵌套json的查询

Mongodb Mongo db:对嵌套json的查询,mongodb,find,Mongodb,Find,示例json对象: { "_id" : ObjectId( "55887982498e2bef5a5f96db" ), "a" : "x", "q" : "null", "p" : "", "s" : "{\"f\":{\"b\":[\"I\"]},\"time\":\"fs\"}" } 需要时间=fs的所有文档 我的问题是: {"s":{"time" : "fs"}} 上面返回的产品为零,但事实并非如此。这里有两个问题。首先,s显然是一个字符串,因此您的查询无法工作。您可以

示例json对象:

{ "_id" : ObjectId( "55887982498e2bef5a5f96db" ),
  "a" : "x",
  "q" : "null",
  "p" : "",
  "s" : "{\"f\":{\"b\":[\"I\"]},\"time\":\"fs\"}" }
需要时间=fs的所有文档 我的问题是:

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

上面返回的产品为零,但事实并非如此。

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

{s: {$regex: '"time"\:"fs"'}}
我建议将
s
字段转换为适当的文档。您可以使用
JSON.parse
来执行此操作。可以使用
db.foo.find().snapshot().forEach
基于当前值更新文档。有关详细信息,请参阅

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

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

就我所知,“s”包含一个简单的字符串,所以像这样的查询是不可能的。所以不可能在这样的文档上进行查询。您可以随时使用它,但它会非常慢。有什么特别的原因使您将字段保留为字符串而不是嵌套文档?嵌套文档将允许被查询?对此有何建议?