node.js - Mongoose - ObjectID 作为键?

标签 node.js mongodb mongoose mongoose-schema

我想在我的 Mongoose 模型中有一个对象(例如“成分”),其中键是 ObjectID,它们的值是数字。有可能这样做吗?我应该如何定义我的 Mongoose 模式?您可以在下面找到示例。

示例 JSON:

  {
    "_id": ""5a2539b41c574006c46f1a07",
    "name": "xyz",
    "ingredients": {
        "5a23f5e6159f5c3438c75971": 50,
        "5a23f60b159f5c3438c75972": 50,
        "5a255b04c9d9c40ac8927dd5": 50
    }
  }

提前感谢您的帮助。

最佳答案

你可以使用混合模式

{
    "_id": ""5a2539b41c574006c46f1a07",
    "name": "xyz",
    "ingredients": mongoose.Schema.Types.mix
  }

引用 how to create dynamic document keys in mongodb

插入动态 key 就是这么简单

insertData_dynamic_colone: function(collection, colone1, colone2) {
    var obj = {};
    obj[colone1] = "14";
    obj[colone2] = "15";
    dbObject.collection(collection).insertOne(obj, function(err, result) {
        assert.equal(err, null);         
    });
}

我知道你以后还需要更新动态 key 引用Update Mongo array: remove dynamic key

collection.update(
    {"_id": ObjectId("5a2539b41c574006c46f1a07")},
    {"$unset": {"ingredients.5a23f5e6159f5c3438c75971": ""}}
)

关于node.js - Mongoose - ObjectID 作为键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47682276/

相关文章:

node.js - Node Express 应用程序将端口 443 请求重定向到 hostmonster 上的端口 3000

node.js - 无法连接到 AWS SES SMTP 终端 Node

mongodb - 如何使用mongo-hadoop连接器从经过身份验证的mongodb中读取Spark应用程序?

mongodb - Mongoid 中的事务 (MongoDB)

node.js - 在单个查询中计算 Mongoose 中的文档数量

javascript - mongoose - 是否可以在运行时动态地向模型添加方法?

c++ - 如何从不同线程调用主 v8 循环中的函数

mysql - 未创建 Sequelize 外键(对于 MySQL)

c# - MongoDB for .Net简单显示数据示例

javascript - 在 mongoosejs 中取列的总和/平均值