HartX
@HartX
Студент, красавчик, плохой программист=)

Как сделать запрос к mongodb для фильтрации по типу поля?

У меня в базе есть поле. Общая структура этого поля это Array с объектами (список словарей). Но так же там есть записи где это поле просто словарь. Мне нужно выловить эти записи. Я пробовал так

{$and: [{'educations':{$type :'object'}}, {educations: {$ne: {$type: 'array'}}}]}

{educations:'object'}
Но мне это не помогло. Как мне отфильтровать по типу поля?
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
@Asapin
В свободное время ковыряюсь с Rust и Wasm
В данном случае надо использовать оператор $not для отрицания равенства. Пример данных:
db.test.insertMany([
  {
    "field1": "abc",
    "field2": [
      {"embeddedField": "a"},
      {"embeddedField": "b"},
      {"embeddedField": "c"}
    ]
  },
  {
    "field1": "xyz",
    "field2": {
      "embeddedField1": "x",
      "embeddedField2": "y",
      "embeddedField3": "z"
    }
  }
])


Запрос:
db.test.find({"field2": {$not: {$type: "array"}}})

Результат:
{
  "_id": ObjectId("..."),
  "field1": "xyz",
  "field2": {
    "embeddedField1": "a",
    "embeddedField2": "b",
    "embeddedField3": "c"
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы