sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo Json Schema Validator AnyOf virker ikke

{test:"123"} mislykkes validering, fordi den ikke er i overensstemmelse med nogen af ​​skemaerne i anyOf , som har brug for test1 eller test2 som den eneste nøgle.

anyOf anvender hvert underskema til din instans og hævder gyldigt, hvis mindst et af underskemaerne består valideringen.

{test1: "123" } mislykkes, fordi rodskemaerne additionalProperties: false forhindrer nøgler i dit objekt, der ikke er defineret i SAME skemaobjektet properties eller patternProperties .

Løsningen er at have nogle overlapninger.

In THIS eksempel (linket er til browsertest, men kun draft-7), jeg har tilføjet rodegenskaber test1 og test2 . Dette vil tillade data, hvor du har nøglen test1 eller test2 at bestå, men da jeg ikke kender dine krav, kan jeg ikke fortælle dig, hvordan du ændrer skemaet for at tillade et objekt med nøglen test at bestå (som hver af anyOf underskemaer forhindrer det).

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

Hvis din hensigt er at kontrollere, at en af ​​de ting, du indsætter, har test1 eller test2 , så er jeg bange for, at JSON Schema ikke kan hjælpe dig. JSON Schema i forbindelse med Mongo kan kun kontrollere hvert element individuelt og har ikke mulighed for at validere en samling af potentielt indsatte poster.

I ovenstående eksempelskema har jeg fjernet typekontrol, fordi det ikke er relevant for dette spørgsmål, og bsonType adskiller sig alligevel fra JSON Schema-typen.




  1. C# mongodb driver 2.0 - Hvordan upsert i en bulk operation?

  2. Node.js filupload (Express 4, MongoDB, GridFS, GridFS-Stream)

  3. Hvordan forhindrer man MongoDB i at returnere objekt-id'et, når man finder et dokument?

  4. MongoDB Index på forskellige typer