代码之家  ›  专栏  ›  技术社区  ›  Ajay

MongoDB-不需要为子数组项生成ObjectId

  •  0
  • Ajay  · 技术社区  · 12 年前

    在Node.js中使用Mongoose在MongoDB中创建记录时,我会自动创建不需要的ObjectId。除了数组项的ObjectId(“540dc9c35ae5b576d96f9d54”)外,MongoDB中生成的记录非常完美。

    如何停止为子数组项生成ObjectId?

    mongoDB行(C)中出现的“__v”:0是什么?

    以下是详细信息,

    A、 Mongoose模型架构:

    var Result = new Schema ({
    name : String,
    class : String,   
    result : [{
        subject : String,    
        marks : Number
    }]
    });
    

    B、 执行脚本:

    Model.Result.create({
            name : “name1”,
            class : “6th”,
            result : [{
                subject : “math”,
                marks : 75
            }]
    }, function(err){});
    

    C、 在mongoDB中创建的行:

    { 
    "name" : "name1", 
    "class" : 6, 
    "_id" : ObjectId("540dc9c35ae5b576d96f9d53"), 
    "result" : [
                { 
                  "subject" : "math",   
                  "_id" : ObjectId("540dc9c35ae5b576d96f9d54"),   
                  "marks" : 75
               }], 
    "__v" : 0 
    }
    
    1 回复  |  直到 12 年前
        1
  •  2
  •   Timothy Strimple    12 年前

    只需在子文档中将_id设置为false。

    var Result = new Schema ({
    name : String,
    class : String,   
    result : [{
        _id: false,
        subject : String,    
        marks : Number
    }]
    });
    

    猫鼬用来跟踪数组索引更改的__v a版本密钥。它可以确保,如果您试图更新结果[0],您实际上更新了所需的行。万一有人在你更新之前推送了一个$,那么你就更新了错误的子文档。你可以阅读更多 here .