簡體   English   中英

MongoDb 在子字段中查找字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM