首页 > 解决方案 > 尝试插入 MongoDB 集合时,键 $date 不能以 '$' 开头

问题描述

所以我有一个名为“noticias”的数据库和一个名为“noticias2”的集合

下面是验证模式:

db.createCollection("noticias2", {
   validator: {
      $jsonSchema: {
         bsonType: "object",
         required: [ "newsID", "nombre", "autor", "fecha", "cuerpo", "comentarios"],
         properties: {
            newsID: {
               bsonType: "int",
               description: "Numero Unico para cada Noticia"
            },
            nombre: {
               bsonType: "string",
               description: "Nombre de la noticia"
            },
            autor: {
               bsonType: "string",
               description: "Nombre del autor de la noticia"
            },
            fecha: {
               bsonType: "date",
               description: "Nombre de usuario del autor"
            },
            cuerpo: {
               bsonType: "string",
               description: "Cuerpo de la noticia"
            },
            comentarios: {
                bsonType: ["array"],
                minItems: 0, // each box of food color must have at least one color
                uniqueItems: false,
                items: {
                    bsonType: ["object"],
                    required: ["autor", "calificacion", "fecha", "comentario"],
                    description: "Los datos de cada comentario",
                    properties: {
                        autor: {
                            bsonType: "string",
                            description: "Nombre del autor de la noticia"
                        },
                        calificacion: {
                          bsonType: "int",
                          description: "La calificacion que dio el autor a la noticia"
                        }, 
                        fecha: {
                            bsonType: "date",
                            description: "Fecha en la que se realizo el comentario"
                        },
                        comentario: {
                            bsonType: "string",
                            description: "Cuerpo del comentario"
                        },
                    }
                }
            },
            tag: {
                bsonType: ["array"],
                uniqueItems: false,
                items: {
                    bsonType: ["string"],
                    description: "Los datos de cada comentario",
                }
            }
        },
      }
   },
   validationAction: "warn"
})

当我尝试插入新项目以测试架构时,出现错误:

"关键 $date 不能以 '$' 开头"

这是插入查询:

db.noticias2.insert(
    {
    "newsID": 3,
    "nombre": "Switches",
    "autor": "Jeannine Hammarberg",
    "fecha": {
        "$date": "2019-05-06T15:32:57.000Z"
    },
    "cuerpo": "Bushpig",
    "comentarios": [
        {
            "autor": "Gabrila Featonby",
            "calificacion": 1,
            "fecha": {
                "$date": "2020-05-18T20:44:07.000Z"
            },
            "comentario": "Southern boubou"
        },
        {
            "autor": "Janeta Lamonby",
            "calificacion": 9,
            "fecha": {
                "$date": "2018-10-06T17:50:47.000Z"
            },
            "comentario": "Squirrel, uinta ground"
        },
        {
            "autor": "Allard Livard",
            "calificacion": 7,
            "fecha": {
                "$date": "2020-05-19T19:27:56.000Z"
            },
            "comentario": "Springbok"
        }
    ],
    "tag": [
        "Gigazoom",
        "Tanoodle",
        "Kaymbo"
    ]
}
)

mongo --version:

蒙戈--版本:

MongoDB shell version v4.4.2
Build Info: {
    "version": "4.4.2",
    "gitVersion": "15e73dc5738d2278b688f8929aee605fe4279b0e",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "windows",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

PD:验证模式中的任何反馈都将不胜感激,并对它是西班牙语感到抱歉,我的教授强迫我这样做

标签: mongodb

解决方案


所以答案是替换每个

"fecha": {
    "$date": "2020-05-18T20:44:07.000Z"
},

和:

"fecha": ISODate('2020-05-18T20:44:07.000Z'),

推荐阅读