我正在尝试将猫鼬更改为使用嵌套模式,以使数据库更加灵活。但是我很难适应一些函数调用以处理新模型。
当前模式如下所示: var buildinginfo = new Schema({
...
, checkout123 : Date
, checkout124 : Date
, checkout125 : Date
, checkout126 : Date
...
}
在此,“ 123”和“ 124”等是“ bookid”的值。我正在尝试将架构更改为以下形式:
var Checkout = new Schema({
"iddate" : Date,
"idnumber" : String
});
var buildinginfo = new Schema({
...
, checkouts: [checkout]
...
}
当前用于更新数据库的代码如下:
const updateObj = {
"buildid": buildingid
, "secupdated" : dateNow.getTime()
}
updateObj["checkout".concat(bookid)] = 1000 * parseInt(checkouttime) ;
traintracks.findOneAndUpdate({
"buildid": buildingid
}, updateObj, {upsert: true}).exec();
这是我为新的updateObj尝试的方法:
const updateObj = {
"buildid": buildingid
, "checkouts.iddate" : 1000 * parseInt(checkoutTime)
, "checkouts.idnumber" : bookid}
但是,这仅向结帐添加了一个元素,而不是为每个书生添加一个元素。救命?