Необходимо фильтровать монго документы на поле, только если это поле существует в этом документе - PullRequest
0 голосов
/ 17 января 2019

У меня есть коллекция с документами, каждый из которых имеет свой набор столбцов. Есть несколько столбцов, которые будут встречаться во всех документах и ​​несколько, которые не будут. Необходимо создать запрос, который ищет текст в столбце, только если этот столбец существует

Пример: в коллекции сборников: db.articles.find({}, {Title:1,Conclusions:1})

    { "_id" : ObjectId("5c392c930e7c0058e781a2c4"), "Title" : "Title for article1", "Conclusions" : { "Conclusions" : "Some conclusion" } }
    { "_id" : ObjectId("5c392c930e7c0058e781a2c9"), "Title" : "Title for article2" }
    { "_id" : ObjectId("5c392c930e7c0058e781a2ce"), "Title" : "Title for article3" }
    { "_id" : ObjectId("5c392c940e7c0058e781a2d8"), "Title" : "Title for article4", "Conclusions" : { "Conclusions" : "Some other conclusion" } }

Я могу проверить, существует ли столбец со следующим:

    db.articles.find({ "Conclusions": { $exists: true, $ne:null } }, {Title:1,Conclusions:1})

но не может использовать его для добавления второго условия (ниже ничего не возвращает)

    db.articles.find({ "Conclusions": { $exists: true, $ne:null }, Conclusions: '/other/i' }, {Title:1,Conclusions:1})

Ожидаемый результат:

    { "_id" : ObjectId("5c392c940e7c0058e781a2d8"), "Title" : "Title for article4", "Conclusions" : { "Conclusions" : "Some other conclusion" } }
...