MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Валидаторът на Mongo Json Schema AnyOf не работи

{test:"123"} е неуспешна проверка, защото не отговаря на нито една от схемите в anyOf , които се нуждаят от test1 или test2 като единствен ключ.

anyOf прилага всяка подсхема към вашето копие и твърди, че е валидна, ако поне една от подсхемите премине проверката.

{test1: "123" } се проваля, защото основните схеми additionalProperties: false предотвратява всякакви ключове във вашия обект, които не са дефинирани в СЪЩИЯ обект на схема properties или patternProperties .

Решението е да има известно дублиране.

In THIS пример (връзката е за тестване на браузър, но само за чернова-7), добавих основни свойства test1 и test2 . Това ще позволи данни, при които имате ключ от test1 или test2 за преминаване, но като се има предвид, че не знам вашите изисквания, не мога да ви кажа как да модифицирате схемата, за да разрешите обект с ключ на test за преминаване (като всеки от anyOf подсхемите го предотвратяват).

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "_id": {},
    "test": {},
    "test1": {},
    "test2": {}
  },
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "test1": {}
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "test2": {}
      },
      "additionalProperties": false
    }
  ]
}

Ако намерението ви е да проверите дали едно от нещата, които вмъквате, има test1 или test2 , тогава се страхувам, че JSON Schema не може да ви помогне. JSON Schema в контекста на Mongo може да проверява само всеки елемент поотделно и не й е предоставена възможността да валидира колекция от потенциално вмъкнати записи.

В горната примерна схема премахнах проверката на типа, защото това не е от значение за този въпрос, а bsonType така или иначе се различава от типа на схемата JSON.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb не можа да се свърже със сървъра

  2. Странно поведение на MongoDB LINQ доставчик за полета, наречени id

  3. Командата за възстановяване на MongoDB е неуспешна

  4. Как мога да намеря близко място с географска ширина и дължина в mongodb?

  5. Как да намерите елементи с помощта на регулярен израз в Mongoose