【发布时间】:2014-03-31 11:14:38
【问题描述】:
我有一个包含两个不同(但相似)结构的文档的集合,一些具有带有单个字符串值的字段“someField”,另一些具有带有一堆子字段的字段“someField”。
我可以查询以下两种类型的文档,当它是字符串时获取someField作为字符串,如果它有子字段则作为一些子字段? (获取字符串或 all 的子字段很容易)
如果您可以将子字段的格式设置为看起来像单个字符串文档,则可以加分。
包含两种类型文档的集合(简化示例)
{
"_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)
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework