Как сравнить одно поле с объединенными полями в mongodb - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть такая коллекция

    sample document
    {
        "field1":"one",
        "field2":"two",
        "field3":"three",
        ...some more key values
    }

Теперь у меня есть значение поля, которое является комбинацией значений field1, field2 и field3.то есть для вышеприведенного документа у меня есть field = "onetwothree" Один из вариантов - сегрегировать это поле на 3 разных поля, но это невозможно, потому что его шаблон не фиксирован, поэтому я хочу сравнить вот так
db.collection.find({"filed1+field2+field3":field}) но это невозможно, поэтому одним из решений является поиск всех документов из коллекции и сравнение их по одному, но это не оптимизированный способ сделать это.Так есть ли лучшее решение для этого?

1 Ответ

0 голосов
/ 22 февраля 2019

Начиная с MongoDB v3.6, вы можете выполнить этот запрос:

db.collection.find({
    $expr: {
        $eq: [
            "onetwothree",
            { $concat: [ "$field1", "$field2", "$field3" ] }
        ]
    }
})

Вот документация по $ concat и $ expr .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...