問題タブ [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 に答える
8659 参照

node.js - サブドキュメントのループ内のvarのマングース

このスキーマを次のように作成しましたmongoose Schema:

メソッドでデータを取得するとfindOne、結果は次のようになります(in console.log()):

SO、ループ構造を使用してサブドキュメントを反復処理し、データを表示するとsocialAccounts、他のオブジェクトと関数が返され、最初のものだけがサブドキュメント オブジェクトになります。この for ループ iterate メソッドを使用して、サブドキュメント の最初の要素のみを取得するにはどうすればよいですか。for var inconsole.log()
socialAccounts

ありがとう

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

mongodb - 親IDとサブIDがわかっている場合、Mondodb IDでサブドキュメントを取得する最良の方法は何ですか

今、私はそのようにやっています

、しかし、それが正しい方法かどうかはわかりません。私のスキーマはこのようなものです

ですから、560b05b6fd9d267f60b7bb28 と 561a22cbe6ebf6d62965b4bc で電話 1234 を取得したいと思います。

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

javascript - Mongoose でサブドキュメントをクエリしているときにドキュメントが返されないのはなぜですか?

次のコードを実行しています。

フィールドごとに X モデルをクエリしたいと思いますtoId.idtoId フィールドのタイプは Y です。モデルの定義は次のとおりです。

Y は、次のように定義された単なるオブジェクトです。

私のデータベースには、次のようなエントリがあります。

これは、私の基準を必ず満たすはずです。

ただし、次のクエリ:

空のリストを返します。なぜそれが起こっているのですか?

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

node.js - 参照されたサブドキュメントの配列でのマングースの検索

IP からの特定の訪問を見つけようとしています。訪問スキーマは次のようになります。

IP スキーマは次のようになります。

特定のIPに対して通常の検索を実行しようとすると:

空の配列を返します。mongo データベース内のすべての記録は、見た目も動作も正常です。

アイデアが足りなくなったので助けてください。

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

node.js - Mongoose $push - 次の場合はエラーなし: 既存の一意のフィールドを持つオブジェクトの挿入 + ゴミ箱の挿入

私が達成しようとしているのは、メイン ドキュメント内にオブジェクトの配列 (サブドキュメントの方法: スキーマで定義) を配置することです。このサブドキュメントをドキュメント自体として動作させたいと考えています。

これは、オブジェクトをサブドキュメント配列にプッシュするときに、エラーがスローされることを望みます:

  • 挿入されるオブジェクトのフィールドのいずれかuniqueがすでに使用されている場合
  • 挿入されるオブジェクトが一致しない場合TemplateSchema

これは私の主なドキュメントになります:

以下は、サブドキュメント、templates内のフィールドになりApplicationSchemaます。

この場合、私がしようとしているとき:

  1. 既存の に新しいオブジェクトを追加するname、または
  2. サブドキュメントにゴミをプッシュする

それが起こっています:

  1. 重複したフィールド値についてエラーがスローされていません
  2. ゴミ箱オブジェクト (つまり{some: "trash"}) が挿入されています - 実際にはオブジェクト自体ではありませんが、配列template 内に空のオブジェクトをプッシュしていますtemplates

理由がわかりません。

templatesメイン ドキュメント内の配列に新しいテンプレート オブジェクトを挿入するために使用しているクエリを次に示します。

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

java - Mongodb : ドキュメントからサブドキュメントを引き出す

私のデータベース スキーマは次のようになります。

質問では、各生徒の宿題の点数が最も低いものを削除するように求められます。私のアプローチは次のとおりです。

  • 最初に、生徒の ID と宿題の点数のみを含むドキュメントのリストを取得します。
  • 各学生の最小 hw スコアを取得します。
  • その最低宿題スコアを含むサブドキュメントを引き出します。

印刷物には各生徒の宿題の最小スコアが正しく表示されますが、プル クエリがデータベースから値を削除していません。ここで何が欠けていますか?解決策を求めるのではなく、ここで私が間違っていることについてのヒントが役立ちます。ありがとう。

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

node.js - ドキュメントを取得して保存する代わりに、クエリで $push を使用してサブドキュメントにデータを挿入する方法

編集:これは実際に機能していました

Mongoose - Subdocs: "Adding subdocs"ドキュメントにあるように、メソッドを使用してサブドキュメントを追加できます(pushつまりparent.children.push({ name: 'Liesl' });)

$pushしかし、さらに進んで、演算子を使用してサブドキュメントを挿入したいと考えています。

私は2つのスキーマを持っていますThingSchema:

と、次のサブドキュメント ( ) のBoxSchema配列を持つメイン ドキュメント:thingsThingSchema

すべてのサブドキュメントに名前thingsを付ける必要があります。つまり、サブドキュメントに既に存在する値をunique持つ新しいドキュメントをこの配列に挿入することは不可能です。name

私は次のようなことをしようとしています:

しかし、望ましい結果は得られません。

Mongoose Docsの方法ではなく、クエリで演算子を使用してThingSchemaサブドキュメントをBoxSchemathing配列に追加する正しい方法は何ですか(同じ名前の別のサブドキュメントがある場合はサブドキュメントを追加しないでください) $push


編集:これは実際に問題です

私は間違いを犯しました。上記のコードは期待どおりに機能しますが、現在の問題は、 が とthingObj一致しない場合、空のオブジェクトが配列ThingSchemaに挿入されることです。things

上記のごみ箱オブジェクトを指定してクエリを実行すると、次の空のオブジェクトが subdocs 配列に挿入されます。

この場合、 が とthingObj一致しない場合、ThingSchema何も追加する必要はありません。

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

mongodb - 複数のサブドキュメントにわたる MongoDB の一意のインデックス

上記のように、プロパティ「名前」はすべてのドキュメントで一意である必要があります。

この構造で一意のインデックスを作成することは可能ですか?

0 投票する
2 に答える
2162 参照

node.js - MongoDB:サブドキュメントを挿入する方法は?

注文と注文ごとのアイテムを処理するために、MEAN プロジェクトでサブドキュメントを使用しています。

これらは私の(簡略化された)スキーマです:

itemPerOrderSchema 配列にアイテムを挿入するには、現在行っています。

問題は、明らかに ごとに 1 つのアイテムが必要itemIdであり、この方法でアイテムごとに多くのサブドキュメントを取得することです...
1 つの解決策は、 all をループすることorder.itemsですが、もちろんこれは最適ではありませorder.itemsん(多くの可能性があります...) . クエリを実行するときに同じ問題が発生する可能性がありorder.itemsます...

itemPerOrderSchema問題は、注文に既に挿入されているすべてのアイテムをループすることなく、配列にアイテムを挿入するにはどうすればよいかということです。