質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

6256閲覧

mongooseでupdateしたい

papi_tokei

総合スコア106

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2016/12/01 05:08

編集2016/12/02 04:46

###前提・実現したいこと
現在Nodejsからmongooseを使ってmongodb
に対して,データの追加を行っています.
今回特定のidに対してデータの更新を行おうと考えました.

###発生している問題・エラーメッセージ

{ name: 'MongoError', message: 'After applying the update to the document {_id: ObjectId(\'583f89f4e15eb906cb00710a\') , ...}, the (immutable) field \'_id\' was found to have been altered to _id: ObjectId(\'583f8a59fd36ce06d9b84dc0\')', driver: true, index: 0, code: 66, errmsg: 'After applying the update to the document {_id: ObjectId(\'583f89f4e15eb906cb00710a\') , ...}, the (immutable) field \'_id\' was found to have been altered to _id: ObjectId(\'583f8a59fd36ce06d9b84dc0\')' }

###該当のソースコード

javascript

1 // 新しいユーザのモデルを作成する. 2 var user = new User(); 3 4 // ユーザの各カラムの情報を取得する. 5 user.oid = req.body.oid; 6 user.sensor = req.body.sensor; 7 user.mode = req.body.mode; 8 user.time = req.body.time; 9 user.lat = req.body.lat; 10 user.lon = req.body.lon; 11 user.accuracy = req.body.accuracy; 12 user.velocity = req.body.velocity; 13 user.bearing = req.body.bearing; 14 user.mtags = req.body.mtags; 15 User.update({oid: user.oid},user , {upsert: true},function(err) { 16 if (err){ 17 res.send(err); 18 console.log(err); 19 } 20 res.json({ message: 'User update!' }); 21 });

###試したこと
エラーに対してgoogleで検索して,いくつかの方法を試してみましたが上手くいきませんでした.
たとえば,find()やfindOneAndUpdate()を使ってみたりしました.
よろしくお願いいたします.
###補足情報(言語/FW/ツール等のバージョンなど)
ユーザーは以下のように定義しています.

javascript

1var UserSchema = new Schema({ 2 oid: String, 3 sensor: String, 4 mode: String, 5 time: Number, 6 lat: Number, 7 lon: Number, 8 accuracy: Number, 9 velocity: Number, 10 bearing: Number, 11 mtags: String 12}); 13 14module.exports = mongoose.model('User', UserSchema);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下の方法で解決しました.

javascript

1// ユーザ情報をアップデートする.ユーザ情報がなければ追加する 2 User.update({oid: user.oid},{$set: {oid: user.oid, sensor: user.sensor, mode: user.mode, time: user.time, lat: user.lat, lon: user.lon, accuracy: user.accuracy, velocity: user.velocity, bearing: user.bearing, mtags: user.mtags}}, {upsert: true},function(err) { 3 if (err){ 4 res.send(err); 5 console.log(err); 6 } 7 res.json({ message: 'User create or update' }); 8 });

投稿2016/12/02 07:43

papi_tokei

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問