Mongoose – ObjectID作为关键?

我想在我的mongoose模型中有一个对象(例如“成分”),其中的键是ObjectIDs,它们的值是数字。 有可能吗? 我应该如何定义我的mongoose模式? 你可以在下面find一个例子。

示例JSON:

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

提前谢谢你的帮助。

你可以使用混合模式

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

参考如何在mongodb中创builddynamic文档键

插入dynamic密钥非常简单

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

我知道你将来还需要更新dynamic密钥,以便参考更新Mongo数组:删除dynamic密钥

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

在模型文件中:

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