在MongoDB中更新一个集合

我正在尝试更新我的collections基础上,如果我find一个值。 我的保存function看起来像这样`

router.post('/savePage', function (req, res) { var page = req.body.page; var query = {'pageId': page.pageId}; var paged = new pagedb(page); pagedb.find(query, function (err, result) { if(err) return console.error(err); if(result.length > 0){ pagedb.update({'pageId': page.pageId}, page ); res.send('updated') } else{ paged.save(function (err) { if (err) { console.log('error saving page!'); throw err; }; res.send('saved'); }); } }); });` 

我的模式看起来像这样

 var pageShema = new Schema({ pageId: { type: String }, logo: { type: String }, show: { type: String }, teamName: { type: String }, header1: { type: String }, header2: { type: String }, date: { type: Date, default: Date.now }, offense:{ type: {} }, defense:{ type: {} } }); 

我的数据保存正常工作似乎并没有更新。 我使用的是mongodb 3.2。 实质上我想用新的replace现有的页面。 该请求中发送的页面

除非您指定callback或对exec()的调用,否则不会执行update 。 你可以做:

 pagedb.update({ 'pageId': page.pageId }, page).exec(); 

要么 :

 pagedb.update({ 'pageId': page.pageId }, page, function(err, res) { if (err) return console.error(err); console.log(res); }); 

使用mongoose,为了debugging,你可以使用debug看到底层的mongodb查询:

 var mongoose = require('mongoose') mongoose.set('debug', true);