[英]MongoDb find a string inside a subfield
假設我們有一個包含如下元素的集合:
{
"_id" : ObjectId(...),
"field1": "some_text",
"field2": {
"subfield1" : [
"some_text",
"some_text",
"some_text"
],
"subfield2" : [
"some_text",
"some_text"
],
"subfield3" : [
"some_text"
]
}
}
現在我想要做的是,我想找到在 field2 值中具有某個字符串的所有 id。 在哪個子領域無關緊要。 如果那里有這樣的字符串,我希望返回整個元素。 假設有 100 個子字段。 我不想分別檢查它們中的每一個。
這將如何完成?
使用它可以將所有值放入一個數組中。 然后很容易在subfields
數組中找到特定的字符串。
db.collection.aggregate([
{
$set: {
subfields: { $objectToArray: [ "$field2" ] }
}
},
{
$set: {
subfields: {
$reduce: {
input: { $concatArrays: [ "$subfields.v" ] },
initialValue: [],
in: { $concatArrays: [ "$$value", "$$this" ] }
}
}
}
},
{$match: {subfields: "whatever you are looking for"}},
{$unset: "subfields"}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.