Mongodb Mongo db:对嵌套json的查询
示例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显然是一个字符串,因此您的查询无法工作。您可以
{ "_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”包含一个简单的字符串,所以像这样的查询是不可能的。所以不可能在这样的文档上进行查询。您可以随时使用它,但它会非常慢。有什么特别的原因使您将字段保留为字符串而不是嵌套文档?嵌套文档将允许被查询?对此有何建议?