問題タブ [subdocument]

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 に答える
942 参照

node.js - MongoDb - サブドキュメントで $match フィルターが機能しない

これはコレクション構造です

level_max_leaves.level指定された入力値と一致するときに、フィルターのサブドキュメント値を見つける必要があります。

そして、これは私が試した方法です、

しかし、ここでは$matchフィルターが機能していません。正確な結果がわかりませんObjectIdString 1

nameフィールドでフィルタリングすると、正常に機能します。このような、

しかし、サブドキュメント レベルでは、その return 0.

私の期待した結果は、

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

arrays - マングースを使用してサブドキュメント配列から特定のフィールドを取得する方法

サブドキュメント配列から特定のフィールドを取得しようとしています

親ドキュメントにはどのフィールドも含めません

サンプル文書はこちら

userId が userId 配列にある場合、階層のランクを返したいと思います

これが私のクエリでこれまでに持っているものです

これまでのところ、必要な階層配列内のオブジェクト全体を返しますが、オブジェクトのランク プロパティのみに制限したいと考えています。

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

node.js - アップサートされたサブドキュメントの _id を返す

私はいたるところを見てきましたが、これを理解することはできません。MongoDB/Mongoose でアップサートされたサブドキュメントの自動生成された _id を返すにはどうすればよいですか?

ここに私のスキーマがあります:

ここに私のクエリがあります:

どんな助けでも大歓迎です、ありがとう!アンリ

0 投票する
0 に答える
74 参照

arrays - 一致するサブドキュメントのみを持つ一致するドキュメントの検索MongoDB

配列のマッキングサブドキュメントをクエリしたいとき、私はいつも同じことに直面しています。

以下のようなコレクションがあるとしましょう。


一致するサブドキュメントのみを含むすべてのドキュメントを取得したいと思います。基準は 1979 年以降に生まれ、hasACar は false です。これは、var を持ち、1979 年より前に生まれた人を除外し、ドキュメントを返すことを意味します。

Aggregation フレームワークでこの計算を行うことができますが、aggregation または mapreduce を使用せずにそれを行う別の方法があることに興味があります。

クエリ時に射影の場合に $elemMatch 演算子を使用しようとしましたが、最初に一致したサブドキュメントのみを含むドキュメントが返されます。

ヘルプやアドバイスをいただければ幸いです。

どうも。

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

mongodb - サブドキュメントをアトミックにアップサートする方法は?

各ユーザー デバイスのアプリケーション関連データを格納するためのドキュメント構造があります。同社には、利用可能なアプリケーションがいくつかありますが、それらは限られており、頻繁に変更されることはありません。そこで、埋め込みサブドキュメント配列アプローチを使用してドキュメントを設計し、シークを減らして集約パイプラインに適したものにしました。

1 つのドキュメントを定義します。

このコレクションはデバイスアプリ固有のデータのみを保存し、セッション/ユーザー関連のデータはすべて別のコレクションに保持されます。

これらのアプリケーションは非常にビジーであるため、競合状態のリスクを軽減するために、atomic コマンドを使用して何かを行う必要があります。

これが質問です。

デバイス "a" とアプリケーション "b" を指定して、1 つのアトミック コマンドでデバイス アプリの値を格納します (たとえば、push_token を保存します)。

ここにテストケースがあります。

  • デバイス「a」のドキュメントがない場合は、デバイスアプリ データで作成します。
  • デバイス「a」のドキュメントは既に存在するが、アプリ「b」は存在しない場合。新しいデバイス アプリをプッシュします。
  • デバイス「a」のドキュメントがすでに存在し、アプリ「b」がすでに存在する場合。既存のものを更新します。

upsert/addToSet/setOnInsert/etc でさまざまなクエリを試して、数日を無駄にしました。しかし、まだ手がかりはありません。

PS。私が考えた2つのオプションがあります。

  • 分離されたコレクションを使用します。これは機能しますが、シーク パフォーマンスと引き換えに、一種の RDBMS のように感じます。
  • 配列の代わりにサブドキュメントへのマップ キーとして app_id を使用します。これも機能しますが、集計パイプラインの機能が失われ、(遅い) マップ削減にフォールバックする可能性があります。

回答の説明

解決策は、バージョン フィールドで楽観的ロックを使用することです。

0 投票する
0 に答える
40 参照

nested - ネストされた子からknitrドキュメントをコンパイルすることはできませんか?

メインドキュメントを第1段階の子として参照する2段階のネストされた子を作成しようとしました。最初のステージの子からコンパイルすると正常に動作しますが、2 番目のステージの子からコンパイルしようとすると停止しました。ベースステージのメインメインドキュメントの第2ステージの子に何らかの指標があるはずだと思います。

ファイル構造は次のようになります。

の上部にFirstStage.Rnw、次のように書きました。% !Rnw root = path/to/Main.Rnw

の上部にSecondStage.Rnw、次のように書きました。% !Rnw root = path/to/FirstStage.Rnw