当前位置: 首页 > 知识库问答 >
问题:

使用NodeJS将文档导入MongoDB时,使用文档的值作为_id

郑鸿朗
2023-03-14

我试图导入一个对象到蒙戈。但是当我试图使用对象的值作为_id它失败了。错误,即:[CastError: Cast to ObjectID在路径_id]的值为11563195失败,以及稍后的[错误:文档在保存之前必须有_id]

我做错了什么?

// Read and import the CSV file.
    csv.fromPath(filePath, {
        objectMode: true,
        headers: keys
    })
    .on('data', function (data) {

        setTimeout(function(){

            var Obj = new models[fileName](data);
            Obj._id = Obj.SOME_ID;

            Obj.save(function (err, importedObj) {

                if (err) {

                    console.log(err);

                } else {

                    console.log('Import: OK');

                }
            });

        }, 500);
    })

以下是使用的模式:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;

    var SomeSchema = new Schema(
        {
            SOME_ID: String,
            FIELD01: String,
            FIELD02: String,
            FIELD03: String,
            FIELD04: String,
            FIELD05: String,
            FIELD06: String,
            FIELD07: String,
            FIELD08: String,
            FIELD09: String,
            FIELD10: String,
            FIELD11: String,
            FIELD12: String,
            FIELD13: String
        },
        {
            collection: 'SomeCollection'
        });

module.exports = mongoose.model('SomeCollection', SomeSchema);

非常感谢您的时间和帮助。

共有1个答案

舒赞
2023-03-14

默认情况下,mongoose正在验证_id字段是否为MongoId。如果您想在_id字段中存储MongoId以外的内容,您需要为_id字段提供不同的类型。

var SomeSchema = new Schema({
    _id: { type: String, required: true }
}
 类似资料:
  • 我试图插入一个json字符串,它包含一个文档数组,但得到以下异常。 MongoDB服务器版本: Mongo-Java驱动程序版本: 我知道方法只用于插入一个文档,但这里是一个数组文档。我不确定在这里如何使用方法。 请引导。 要插入的JSON字符串: 异常日志: main.java GenericUtils.java pom.xml

  • 我正在尝试使用他们网站上提供的Docx4j社区包将一个Word文件转换成PDF。(http://www . docx 4 Java . org/docx 4j/docx 4j-community-3 . 3 . 1 . zip) 看起来这个包上的docx4j和FOP之间存在版本不兼容问题,我想知道以前是否有人遇到过这个问题,您是否知道什么版本的库可以实现这个功能。 这是我的代码: 我复制了下面的s

  • 问题内容: 我正在使用MongoDB数据库,该数据库的收集模型包括 班级 , 学生 , 学科 和[学术] 表现 。以下是基于猫鼬的架构和模型: 该集合的文件是最复杂的地段; 示例文档为: 我能够使用以下代码检索现有的班级文档并将其添加到分数中: 但是,如何添加/更新/删除该特定学生的成绩?我需要能够通过以下方式与集合进行交互: 检索所有学生或特定学生的分数(检索数组中的特定元素) 为特定主题添加/

  • 主要内容:insert() 与 save() 方法,insertOne() 方法,insertMany() 方法前面我们已经介绍了如何在 MongoDB 中 创建数据库和 创建集合,接下来我们再来介绍一下如何在集合中插入文档。文档是 MongoDB 中数据的基本单位,由 BSON 格式(一种计算机数据交换格式,类似于 JSON)的键/值对组成。 insert() 与 save() 方法 您可以使用 MongoDB 中的 insert() 或 save() 方法向集合中插入文档,语法如下: db.

  • 问题内容: 我想使用“ $ set”更新嵌入式文档,但是该字段是变量。 说我有一个像这样的文件: 现在,我要向添加一个新人。我可以使用,但是如果名称(而不是B)是变量怎么办? 我正在使用Node.js 5.1和’mongodb’驱动程序。 问题答案: 您需要使用运算符动态构建查询。