Mongoose更新查询不断更新插入数据,而不需要更新,只添加1个字段

我正在使用Mongoose在Facebook上loginNode js。 我正在更新数据时遇到问题。

这是我的Scheme文件

var mongoose = require('mongoose'); var Schema = mongoose.Schema; // Schema var RegSchema = mongoose.Schema({ UserName: String, UserEmail: String, userprofileImage : String, userId: String, reg_time : { type : Date, default: Date.now } }, { collection: 'user' }); // Model module.exports = mongoose.model('UserReg', RegSchema); 

这是我的主要文件更新和插入(如果没有find)被放置

 var express = require('express'); var mongoose = require('mongoose'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); var UserReg = require('./myschema.js'); module.exports = function(userdetail, callback){ var bb; var UserAdd = new UserReg({ "UserName": userdetail.username, "UserEmail": userdetail.useremail, "userId": userdetail.userId, "userprofileImage": userdetail.userprofileImage }); var userdetailchange = { "UserName": userdetail.username, "UserEmail": userdetail.useremail, "userId": userdetail.userId, "userprofileImage": userdetail.userprofileImage }; // Update if found otherwise Insert UserAdd.update({"userId":userdetail.userId },{ $set:userdetailchange, $setOnInsert:userdetailchange ,upsert:true, new: true, setDefaultsOnInsert: true}, function (err, data) { if (err) { callback(err); } callback(data); }); }; 

现在它继续插入用户数据集合只有一个字段是userId和一个默认_id字段。 如果find匹配,请帮助我更新整个数据或在Collection中插入整个数据。 任何帮助将不胜感激。

upsertnewsetDefaultsOnInsert是选项,这些选项需要在单独的第三个参数中传递以进行update ( 在此logging ):

 UserReg.update({ "userId" : userdetail.userId // query document }, { $set : userdetailchange, // update document $setOnInsert : userdetailchange }, { upsert : true, // options new : true, setDefaultsOnInsert : true }, function (err, data) { ... });