問題タブ [findandmodify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1263 参照

mongodb - MongoDB で深くネストされたドキュメントで findAndModify のようなものを使用できますか?

MongoDB に次のようなドキュメントを含むCollectionコンテキストがあります (コンテキストにはロールを持つユーザーがいます)

findAndModifyを使用してユーザーにロールを追加 (または削除) する方法はありますか?

0 投票する
1 に答える
2940 参照

node.js - mongodb の findAndModify エラー - nodejs - エラー コード 17287

次のエラーが表示されます:

MongoError: 例外: nextSafe(): { $err: "クエリを正規化できません: adValue の不適切な並べ替え指定"、コード: 17287 }

0 投票する
1 に答える
214 参照

mongodb - ラッピング情報なしで findAndModify の結果として見つかったドキュメントのみを取得する方法はありますか

findAndModifyMongoDb リクエストがあります。mongo サーバーはドキュメントを次のようにラップします。

valueキーからオブジェクトのみを取得する方法はありますか?

0 投票する
1 に答える
549 参照

node.js - node.js/MongoDb での findAndModify の使用法

ユーザーのお気に入りの映画のリストを表示するコレクションがあります。これがサンプルデータセットです...

_id545c08dcc4d2b8a0243dd4dbと映画が与えられました

これを Node.js/MongoDB の watch_movies に追加する必要がある場合は、次の方法しかないと思います。

  1. 検索を使用してドキュメントを検索する
  2. 見つかったドキュメントに対して、watched_movies 配列に追加して findAndModify を実行します。

ステップ #2 は、 http://mongodb.github.io/node-mongodb-native/markdown-docs/insert.htmlの例に基づいています 。

これを行うより良い方法はありますか?具体的には、ステップ#1を回避できますか?

これが私がステップ#2をやっている方法です。しかし、「watched_movies」要素を取得するためにステップ 1 を実行し、新しいムービーをそれに追加して、movielist

このスキーマ設計を改善するための提案も受け付けています。

0 投票する
1 に答える
1451 参照

mongodb - 初期値がゼロでない Mongodb カウンター

1000から始まるカウンターを作りたいです。

つまり、次のようにmongodbドキュメントをアップサートします

  • ドキュメントが存在しない場合は、値 1000 で作成します
  • ドキュメントが既に存在する場合は、値を +1 増やします

以下は機能しません。

挿入の場合は $set 1000 が必要であるが、更新の場合は $inc 1 が必要であることを upsert に伝える方法はありますか?

0 投票する
3 に答える
792 参照

java - リストを含む mongo (または spring-mongo) ドキュメントをアップサートするにはどうすればよいですか

リストの要素が常にアップサートされた値の結合になるように、リストを含むドキュメントをアップサートする方法があるかどうかを判断しようとしています。

次のクラスがあるとします (物事を単純化するために構成されています)。

さらに、最近読んだ本だけの更新を取得すると仮定しますが、読んだすべての本の完全なリストを DB に保持したいと考えています。したがって、私がやりたいのは、存在しない場合は Patron (booksRead を使用) を挿入するか、Patron が既に存在する場合は booksRead を更新することです。

したがって、最初の upsert 'John Doe' はコレクションにないため、ドキュメントが挿入され、次のようになります。

ジョンは「怒りの葡萄」を読み直し、「ネズミと人間」も読みました。挿入は、読んだ本として 2 本を渡そうとしますが、「Of Mice and Men」だけを読み取りリストに挿入して、ドキュメントが次のようになるようにしたいと思います。

私が試したことはすべて、挿入用と更新用の呼び出しを分離する必要があることを示しているようです。Update.set は最初のロード (挿入) で機能しますが、2 回目の更新で完全なリストを置き換えます。$addToSet は更新時に機能しますが、最初の挿入時に「非配列」に挿入しようとすると不平を言います。

アップデート:

これは、Spring-mongodb の問題のようです。mongo Java api 呼び出しで上記を実現できますが、同等のスプリングを使用すると失敗します。(少なくとも spring-data-mongodb 1.6.2 まで)

0 投票する
1 に答える
6125 参照

mongodb - golangでmongodbの1つのレコードを見つけて変更するにはどうすればよいですか?

私はこのようなものが欲しい:

  1. mongo dbで1つのレコードを見つけるold_record
  2. この記録を次のように更新しますnew_record
  3. 戻るold_record

次のようなコードを書きます。

しかし、操作である必要があるfindと思うので、私のコードは安全ではありません。updateatomic

アトミック操作でこれを行うにはどうすればよいですか