我正在尝试更新具有当前日期/时间的特定ID的文档,但下面的代码不会导致数据库更新并且没有错误。任何帮助都会很棒,谢谢。
架构:
var MerchantShema = new Schema({
merchant_id: Number,
merchant_aw_id: Number,
merchant_name: String,
merchant_url: String,
merchant_image: String,
product_feed: String,
product_feed_updated: Date,
created_at: {type: Date, default: Date.now},
updated_at: {type: Date, default: Date.now}
});
更新查询:
updateMerchantLastProductUpdate: function (mID) {
now = new Date();
var query = { "merchant_aw_id" : mID };
Merchants.update(query, { "product_feed_updated": now }, function (err) {
if (err) return console.error(err);
})
}
路线
app.get('/queries', function (req, res) {
queries.updateMerchantLastProductUpdate("2926");
});
示例文档
{
"_id": {
"$oid": "55997638e4b01f0391cb99aa"
},
"merchant_id": "0003",
"merchant_aw_id": "2926",
"merchant_name": "Multipower",
"merchant_url": "www.multipower.com/uk/",
"merchant_image": "",
"product_feed": "aw",
"product_feed_updated": "",
"created_at": "",
"updated_at": ""
}
答案 0 :(得分:3)
您的mongoose架构中的merchant_aw_id
字段需要一个数字,因此您需要使用查询中的 parseInt()
方法解析整数字符串。您还需要 $set
更新运算符,它将具有指定值的字段值替换为更新文档,以及{multi: true}
选项,如果设置为true,则更新符合查询条件的多个文档。如果设置为false,则更新一个文档。默认值为false:
updateMerchantLastProductUpdate: function (mID) {
var now = new Date(),
query = { "merchant_aw_id" : parseInt(mID) },
update = {
"$set": { "product_feed_updated": now }
},
options = { "multi": true };
Merchants.update(query, update, options, function (err) {
if (err) return console.error(err);
})
}
答案 1 :(得分:0)
我的错误是由于我的模型具有我正在寻找的ID格式,但我在mongoDB中的数据是一个字符串