問題タブ [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 投票する
2 に答える
933 参照

javascript - Meteor / Mongoを介してサブドキュメント配列を返す

サブドキュメントに追加するタグを返したり表示したりするのに少し問題があります。タグ付けは問題ないのですが、タグごとに商品にラベルを付けたいです。サブドキュメント内の配列内のアイテムを返すのに役立つリソースが見つかりません。私が立ち往生しているのはすべてのヘルパーだと思います-基本的に「Items.(this._id).itemTags.find();」を書く構文的に正しい方法です。:)

ああ、HTML と JS の多くを削除しましたが、その他はすべて正常に動作しています。コレクションは "Items" で、サブドキュメントは "itemTags" で、挿入時に "itemTags: []" で設定されます。私のテスト環境では、"Cats" と "Dogs" をタグとして追加し、"Items.find().fetch();" を介してオブジェクトを調べることで動作を確認できます。しかし、それらを表示するのに苦労しています。

HTML:

JS:

データベース スキーマ (insert コマンドで表示):

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

arrays - サブドキュメントの配列でのmongodbマルチキーインデックスの境界

背景として、私の質問に最も関連していると思われるドキュメントのページは、マルチキー インデックスの境界とインデックスの交差に関するこのページです。

サブドキュメントの配列内のフィールドに対する $elemMatch クエリで、mongo がインデックス境界を適切に結合していないように見えるという問題があります。

ドキュメントは、私の特定のユースケースが機能しないとは言っていないようで、私がやっていることに非常に近い例がたくさんあります。技術的な観点から、これが機能しない理由は思いつきません。私は何かを見逃していましたか、それともなぜこれがそのように振る舞うのか誰かが私に説明できますか?

次のようなドキュメントのコレクションから始めています。

次のようなインデックスを配置しています。

次のように、データ配列にサブドキュメントが 1 つしかない場合:

データに対する $elemMatch クエリは問題なく動作します。

dataしかし、配列内に複数のサブドキュメントを含むドキュメントを追加すると、次のようになります。

クエリは桁違いに長くかかり (自明でないテスト ケースでは)、Explain は境界を適切な から に変更し[2, 2][-Infinity, 2]フラグisMultiKeyはに変わりtrueます。

正しい btree インデックスを使用して正しい結果を取得していますが、この問題は、大規模なデータセットで使用できるかどうかの違いです。

私が使用しているクエリもこれと同等であることを知っています:

しかし、私は簡単にするためにそれをやっています - $gt $gte $lt $lte のいずれかで境界を指定すると、インデックス境界がインデックスで不適切に設定されているという点で同じ動作が観察されます (または私にはそう思われます)。

参考までに、上記のクエリを実行すると、実際に予想されるインデックス境界が取得されるため、mongo が複数のサブドキュメントの配列を使用して必要な計画を満たすクエリを発行できないわけではありません。

... もう一度言います - 何か見逃しましたか? 私はそれを間違っていますか?回避策はありますか?これはバグですか、それとも既知の問題ですか?

複製されたシャード クラスターで mongodb v2.6.5 を使用しています。

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

node.js - mongoose + nodejs + expressでサブドキュメントを削除する方法

タスクという名前のサブドキュメントを削除するにはどうすればよいですか? 親スキーマは User で、子スキーマは Task という名前です。

これが私のルートです:

そして少しの ajax:

なぜこれが機能しないのですか?

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

mongodb - サブドキュメントごとの MongoDb 集計

これらのコレクション、統計、アイテムがあります。Stats には、サブドキュメントとして 1 つの項目があります。

item.type ごとに Stats グループを集計したいと思います。出来ますか?

私はこのようなことを試しましたが、運がありませんでした:

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

angularjs - angular $http でサブドキュメントを取得する

次のマップに従うネストされたコレクションab、およびがあるとします。c

そしてa1、これはMongoDbデータベースからフェッチされたものです$http:

現在、bee配列には参照 ( id) しかありません。必要なのは、マップをたどって更新a1し、参照を実際のデータに置き換えることです。

データベースからのフェッチb1b2データが必要になり、それぞれが配列を持ち、その要素をコレクションceeからフェッチする必要があります。c

専用のバックエンド関数を簡単に作成できると思いますa1.

a1しかし、複数の $http/$resource 呼び出しを使用して、完全に詳細なバージョンを取得するにはどうすればよいでしょうか?

再帰関数を使用する必要がありますか?

それとも、$q とチェーンされた promise を使用するのが最善でしょうか?

マップをたどる方法 (関連するコレクションとその名前を知るため)、関連するアイテムを取得しb、次に関連するアイテムを取得しc、最後に updateを次a1のように置き換えa1ます。

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

c# - サブドキュメント C# に対する MongoDB GeoSpatial クエリ

無事ゲットしました

私のドキュメントがこの構造を持っているときに正しい結果を返すには:

そしてこのインデックス:

ただし、次のようなFooの配列を持つサブドキュメントを含めるようにドキュメントを変更した瞬間:

そして、次のようにサブドキュメント フィールドを使用するようにインデックスとクエリを変更します。

期待どおりに動作しなくなります。上記のシナリオでは、1 つのアイテムを含む Location のリストが返されます。そのアイテムはすべて Foos です。

更新され た詳しく説明すると、400 個の Foo オブジェクトがある場合、サブドキュメントでクエリを実行すると、Locations が 400 個の Foo を持つリストであるリストが返されます。そのため、Foos がポリ内にあるかどうかを正常に確認できません。

私の直接の窓から:

私が期待しているのは、リストの場所がポリゴンに基づいてフィルタリングされることです。

誰が私が間違っているのか教えてもらえますか? 私はオンラインで検索しましたが、この構造の例はあまりないようですが、ドキュメントには、私が持っている方法でインデックスを作成できると書かれています。

サブドキュメント内のフィールドとして位置データをモデル化することもできます。この場合、ドキュメントにはドキュメントの配列を保持するフィールド (アドレスなど) が含まれ、各ドキュメントには位置座標を保持するフィールド (loc: など) があります。例えば:

次に、次の例のように、addresses.loc フィールドに地理空間インデックスを作成できます。

サブドキュメントがどのように正しく機能するかを理解していないため、クエリが間違っているに違いありません。

何か案は?

ありがとう。