問題タブ [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.
javascript - Meteor / Mongoを介してサブドキュメント配列を返す
サブドキュメントに追加するタグを返したり表示したりするのに少し問題があります。タグ付けは問題ないのですが、タグごとに商品にラベルを付けたいです。サブドキュメント内の配列内のアイテムを返すのに役立つリソースが見つかりません。私が立ち往生しているのはすべてのヘルパーだと思います-基本的に「Items.(this._id).itemTags.find();」を書く構文的に正しい方法です。:)
ああ、HTML と JS の多くを削除しましたが、その他はすべて正常に動作しています。コレクションは "Items" で、サブドキュメントは "itemTags" で、挿入時に "itemTags: []" で設定されます。私のテスト環境では、"Cats" と "Dogs" をタグとして追加し、"Items.find().fetch();" を介してオブジェクトを調べることで動作を確認できます。しかし、それらを表示するのに苦労しています。
HTML:
JS:
データベース スキーマ (insert コマンドで表示):
arrays - サブドキュメントの配列でのmongodbマルチキーインデックスの境界
背景として、私の質問に最も関連していると思われるドキュメントのページは、マルチキー インデックスの境界とインデックスの交差に関するこのページです。
サブドキュメントの配列内のフィールドに対する $elemMatch クエリで、mongo がインデックス境界を適切に結合していないように見えるという問題があります。
ドキュメントは、私の特定のユースケースが機能しないとは言っていないようで、私がやっていることに非常に近い例がたくさんあります。技術的な観点から、これが機能しない理由は思いつきません。私は何かを見逃していましたか、それともなぜこれがそのように振る舞うのか誰かが私に説明できますか?
次のようなドキュメントのコレクションから始めています。
次のようなインデックスを配置しています。
次のように、データ配列にサブドキュメントが 1 つしかない場合:
データに対する $elemMatch クエリは問題なく動作します。
data
しかし、配列内に複数のサブドキュメントを含むドキュメントを追加すると、次のようになります。
クエリは桁違いに長くかかり (自明でないテスト ケースでは)、Explain は境界を適切な から に変更し[2, 2]
、[-Infinity, 2]
フラグisMultiKey
はに変わりtrue
ます。
正しい btree インデックスを使用して正しい結果を取得していますが、この問題は、大規模なデータセットで使用できるかどうかの違いです。
私が使用しているクエリもこれと同等であることを知っています:
しかし、私は簡単にするためにそれをやっています - $gt $gte $lt $lte のいずれかで境界を指定すると、インデックス境界がインデックスで不適切に設定されているという点で同じ動作が観察されます (または私にはそう思われます)。
参考までに、上記のクエリを実行すると、実際に予想されるインデックス境界が取得されるため、mongo が複数のサブドキュメントの配列を使用して必要な計画を満たすクエリを発行できないわけではありません。
... もう一度言います - 何か見逃しましたか? 私はそれを間違っていますか?回避策はありますか?これはバグですか、それとも既知の問題ですか?
複製されたシャード クラスターで mongodb v2.6.5 を使用しています。
node.js - mongoose + nodejs + expressでサブドキュメントを削除する方法
タスクという名前のサブドキュメントを削除するにはどうすればよいですか? 親スキーマは User で、子スキーマは Task という名前です。
これが私のルートです:
そして少しの ajax:
なぜこれが機能しないのですか?
mongodb - サブドキュメントごとの MongoDb 集計
これらのコレクション、統計、アイテムがあります。Stats には、サブドキュメントとして 1 つの項目があります。
item.type ごとに Stats グループを集計したいと思います。出来ますか?
私はこのようなことを試しましたが、運がありませんでした:
angularjs - angular $http でサブドキュメントを取得する
次のマップに従うネストされたコレクションa
、b
、およびがあるとします。c
そしてa1
、これはMongoDbデータベースからフェッチされたものです$http
:
現在、bee
配列には参照 ( id
) しかありません。必要なのは、マップをたどって更新a1
し、参照を実際のデータに置き換えることです。
データベースからのフェッチb1
とb2
データが必要になり、それぞれが配列を持ち、その要素をコレクションcee
からフェッチする必要があります。c
専用のバックエンド関数を簡単に作成できると思いますa1
.
a1
しかし、複数の $http/$resource 呼び出しを使用して、完全に詳細なバージョンを取得するにはどうすればよいでしょうか?
再帰関数を使用する必要がありますか?
それとも、$q とチェーンされた promise を使用するのが最善でしょうか?
マップをたどる方法 (関連するコレクションとその名前を知るため)、関連するアイテムを取得しb
、次に関連するアイテムを取得しc
、最後に updateを次a1
のように置き換えa1
ます。
c# - サブドキュメント C# に対する MongoDB GeoSpatial クエリ
無事ゲットしました
私のドキュメントがこの構造を持っているときに正しい結果を返すには:
そしてこのインデックス:
ただし、次のようなFooの配列を持つサブドキュメントを含めるようにドキュメントを変更した瞬間:
そして、次のようにサブドキュメント フィールドを使用するようにインデックスとクエリを変更します。
期待どおりに動作しなくなります。上記のシナリオでは、1 つのアイテムを含む Location のリストが返されます。そのアイテムはすべて Foos です。
更新され た詳しく説明すると、400 個の Foo オブジェクトがある場合、サブドキュメントでクエリを実行すると、Locations が 400 個の Foo を持つリストであるリストが返されます。そのため、Foos がポリ内にあるかどうかを正常に確認できません。
私の直接の窓から:
私が期待しているのは、リストの場所がポリゴンに基づいてフィルタリングされることです。
誰が私が間違っているのか教えてもらえますか? 私はオンラインで検索しましたが、この構造の例はあまりないようですが、ドキュメントには、私が持っている方法でインデックスを作成できると書かれています。
サブドキュメント内のフィールドとして位置データをモデル化することもできます。この場合、ドキュメントにはドキュメントの配列を保持するフィールド (アドレスなど) が含まれ、各ドキュメントには位置座標を保持するフィールド (loc: など) があります。例えば:
次に、次の例のように、addresses.loc フィールドに地理空間インデックスを作成できます。
サブドキュメントがどのように正しく機能するかを理解していないため、クエリが間違っているに違いありません。
何か案は?
ありがとう。