【问题标题】:Mongoose - ObjectID as key?Mongoose - ObjectID 作为键?
【发布时间】:2018-05-20 19:20:15
【问题描述】:

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

示例 JSON:

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

提前感谢您的帮助。

【问题讨论】:

  • 键是objectID,值是数字是什么意思?您想创建自己的密钥吗?

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

你可以使用混合模式

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

参考how to create dynamic document keys in mongodb

动态键的插入就是这么简单

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);         
    });
}

我知道您将来还需要更新动态密钥 参考Update Mongo array: remove dynamic key

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

【讨论】:

  • 感谢您的回答和未来的参考:)
  • 快乐编码 :)
【解决方案2】:

在模型文件中:

(...)
ingredients: {
    id: { type: mongoose.Schema.ObjectId, ref: 'xxx' } ,
    value: Number,
  },
(...)

在xxx中你应该通过model id字段所属的字段来改变。

【讨论】:

  • 这将创建像ingrdients: { id: "", value: "" } 这样的文档,这不是问题所在。 ingredients 也是一个数组。
猜你喜欢
  • 2012-08-20
  • 2018-01-06
  • 1970-01-01
  • 2018-02-13
  • 2016-06-08
  • 1970-01-01
  • 2021-03-14
  • 2020-04-18
  • 2013-03-24
相关资源
最近更新 更多