問題タブ [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.
node.js - サブドキュメントのループ内のvarのマングース
このスキーマを次のように作成しましたmongoose Schema:
メソッドでデータを取得するとfindOne、結果は次のようになります(in console.log()):
SO、ループ構造を使用してサブドキュメントを反復処理し、データを表示するとsocialAccounts、他のオブジェクトと関数が返され、最初のものだけがサブドキュメント オブジェクトになります。この for ループ iterate メソッドを使用して、サブドキュメント
の最初の要素のみを取得するにはどうすればよいですか。for var inconsole.log()socialAccounts
ありがとう
mongodb - 親IDとサブIDがわかっている場合、Mondodb IDでサブドキュメントを取得する最良の方法は何ですか
今、私はそのようにやっています
、しかし、それが正しい方法かどうかはわかりません。私のスキーマはこのようなものです
ですから、560b05b6fd9d267f60b7bb28 と 561a22cbe6ebf6d62965b4bc で電話 1234 を取得したいと思います。
javascript - Mongoose でサブドキュメントをクエリしているときにドキュメントが返されないのはなぜですか?
次のコードを実行しています。
フィールドごとに X モデルをクエリしたいと思いますtoId.id。toId フィールドのタイプは Y です。モデルの定義は次のとおりです。
Y は、次のように定義された単なるオブジェクトです。
私のデータベースには、次のようなエントリがあります。
これは、私の基準を必ず満たすはずです。
ただし、次のクエリ:
空のリストを返します。なぜそれが起こっているのですか?
node.js - 参照されたサブドキュメントの配列でのマングースの検索
IP からの特定の訪問を見つけようとしています。訪問スキーマは次のようになります。
IP スキーマは次のようになります。
特定のIPに対して通常の検索を実行しようとすると:
空の配列を返します。mongo データベース内のすべての記録は、見た目も動作も正常です。
アイデアが足りなくなったので助けてください。
node.js - Mongoose $push - 次の場合はエラーなし: 既存の一意のフィールドを持つオブジェクトの挿入 + ゴミ箱の挿入
私が達成しようとしているのは、メイン ドキュメント内にオブジェクトの配列 (サブドキュメントの方法: スキーマで定義) を配置することです。このサブドキュメントをドキュメント自体として動作させたいと考えています。
これは、オブジェクトをサブドキュメント配列にプッシュするときに、エラーがスローされることを望みます:
- 挿入されるオブジェクトのフィールドのいずれか
uniqueがすでに使用されている場合 - 挿入されるオブジェクトが一致しない場合
TemplateSchema
これは私の主なドキュメントになります:
以下は、サブドキュメント、templates内のフィールドになりApplicationSchemaます。
この場合、私がしようとしているとき:
- 既存の に新しいオブジェクトを追加する
name、または - サブドキュメントにゴミをプッシュする
それが起こっています:
- 重複したフィールド値についてエラーがスローされていません
- ゴミ箱オブジェクト (つまり
{some: "trash"}) が挿入されています - 実際にはオブジェクト自体ではありませんが、配列template内に空のオブジェクトをプッシュしていますtemplates
理由がわかりません。
templatesメイン ドキュメント内の配列に新しいテンプレート オブジェクトを挿入するために使用しているクエリを次に示します。
java - Mongodb : ドキュメントからサブドキュメントを引き出す
私のデータベース スキーマは次のようになります。
質問では、各生徒の宿題の点数が最も低いものを削除するように求められます。私のアプローチは次のとおりです。
- 最初に、生徒の ID と宿題の点数のみを含むドキュメントのリストを取得します。
- 各学生の最小 hw スコアを取得します。
- その最低宿題スコアを含むサブドキュメントを引き出します。
印刷物には各生徒の宿題の最小スコアが正しく表示されますが、プル クエリがデータベースから値を削除していません。ここで何が欠けていますか?解決策を求めるのではなく、ここで私が間違っていることについてのヒントが役立ちます。ありがとう。
node.js - ドキュメントを取得して保存する代わりに、クエリで $push を使用してサブドキュメントにデータを挿入する方法
編集:これは実際に機能していました
Mongoose - Subdocs: "Adding subdocs"ドキュメントにあるように、メソッドを使用してサブドキュメントを追加できます(pushつまりparent.children.push({ name: 'Liesl' });)
$pushしかし、さらに進んで、演算子を使用してサブドキュメントを挿入したいと考えています。
私は2つのスキーマを持っていますThingSchema:
と、次のサブドキュメント ( ) のBoxSchema配列を持つメイン ドキュメント:thingsThingSchema
すべてのサブドキュメントに名前thingsを付ける必要があります。つまり、サブドキュメントに既に存在する値をunique持つ新しいドキュメントをこの配列に挿入することは不可能です。name
私は次のようなことをしようとしています:
しかし、望ましい結果は得られません。
Mongoose Docsの方法ではなく、クエリで演算子を使用してThingSchemaサブドキュメントをBoxSchemaのthing配列に追加する正しい方法は何ですか(同じ名前の別のサブドキュメントがある場合はサブドキュメントを追加しないでください) 。$push
編集:これは実際に問題です
私は間違いを犯しました。上記のコードは期待どおりに機能しますが、現在の問題は、 が とthingObj一致しない場合、空のオブジェクトが配列ThingSchemaに挿入されることです。things
上記のごみ箱オブジェクトを指定してクエリを実行すると、次の空のオブジェクトが subdocs 配列に挿入されます。
この場合、 が とthingObj一致しない場合、ThingSchema何も追加する必要はありません。
mongodb - 複数のサブドキュメントにわたる MongoDB の一意のインデックス
上記のように、プロパティ「名前」はすべてのドキュメントで一意である必要があります。
この構造で一意のインデックスを作成することは可能ですか?
node.js - MongoDB:サブドキュメントを挿入する方法は?
注文と注文ごとのアイテムを処理するために、MEAN プロジェクトでサブドキュメントを使用しています。
これらは私の(簡略化された)スキーマです:
itemPerOrderSchema 配列にアイテムを挿入するには、現在行っています。
問題は、明らかに ごとに 1 つのアイテムが必要itemIdであり、この方法でアイテムごとに多くのサブドキュメントを取得することです...
1 つの解決策は、 all をループすることorder.itemsですが、もちろんこれは最適ではありませorder.itemsん(多くの可能性があります...) . クエリを実行するときに同じ問題が発生する可能性がありorder.itemsます...
itemPerOrderSchema問題は、注文に既に挿入されているすべてのアイテムをループすることなく、配列にアイテムを挿入するにはどうすればよいかということです。