我有一個包含兩個不同(但相似)結構的文檔的集合,其中一些字段具有單個字符串值的字段「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)
你總是可以問你另一個問題「真實世界」的例子。如果你正在使用的數據很大,那麼你會想不做迭代來完成這個轉換。我一定錯過了你想要**的字符串,所以我也更新了這個部分。 –