我有一个包含两个不同(但相似)结构的文档的集合,其中一些字段具有单个字符串值的字段“someField”,另一些字段具有字段“someField” -fields。查询具有不同子字段异构的文档
我可以查询以下两种类型的文档,当字符串为字符串时,将someField作为字符串,并且如果子字段为,某些子字段? (很容易获得子字段的字符串或全部)
如果您可以格式化子字段以使其看起来像单个字符串文档,则可以获得奖励分数。
包含两种类型的文件(简化的例子)
{
"_id" : ObjectId("53345585cdf2fb6a03f4a7bc"),
"document" : {
"someField" : "Foo 1, Bar 2",
}
}
{
"_id" : ObjectId("533455sdfghjfb6a03f4a7bc"),
"document" : {
"someField" : {
"foo": "1",
"bar": "2",
"wibble": "I don't want this field"
}
}
}
额外的信息采集:
最好我到目前为止是在另一个脚本之后使用两个查询,并加入结果放在一起或代码:
db.someCollection.find(
{
"document.someField.foo":{$exists:false},
},
{
"document.someField": 1,
_id: 0
}
).forEach(printjson)
db.someCollection.find(
{
"document.someField.foo":{$exists:true},
},
{
"document.someField.foo": 1,
"document.someField.bar": 1,
_id: 0
}
).forEach(printjson)
你总是可以问你另一个问题“真实世界”的例子。如果你正在使用的数据很大,那么你会想不做迭代来完成这个转换。我一定错过了你想要**的字符串,所以我也更新了这个部分。 –