0

子ドキュメントの配列を持つ親ドキュメントとは対照的に、子ドキュメントが親ドキュメントを参照するように、2 つの Mongoose モデル スキーマをセットアップしました。(ドキュメントのサイズ制限が 16MB であるため、このようになっています。親/子ドキュメント間の関係の量を制限したくありませんでした):

// Parent Model Schema
const parentSchema = new Schema({
    name: Schema.Types.String
})


// Child Model Schema
const childSchema = new Schema({
    name: Schema.Types.String,
    _partition: {
        type: Schema.Types.ObjectId,
        ref: 'Parent'
    }
})

親ドキュメントを照会できる静的メソッドを作成し、次に親ドキュメントと一致する子ドキュメントを照会してから、親ドキュメントに Children 配列を参照する新しいアイテムを作成したいと考えています。

基本的に、親ドキュメントが次の場合:

{
    _id: ObjectId('56ba258a98f0767514d0ee0b'),
    name: 'Foo'
}

子ドキュメントは次のとおりです。

[
    {
        _id: ObjectId('56b9b6a86ea3a0d012bdd062'),
        name: 'Name A',
        _partition: ObjectId('56ba258a98f0767514d0ee0b')
    },{
        _id: ObjectId('56ba7e9820accb40239baedf'),
        name: 'Name B',
        _partition: ObjectId('56ba258a98f0767514d0ee0b')
    }
]

次に、次のようなものを探しています:

{
    _id: ObjectId('56ba258a98f0767514d0ee0b'),
    name: 'Foo',
    children: [
        {
            _id: ObjectId('56b9b6a86ea3a0d012bdd062'),
            name: 'Name A',
            _partition: ObjectId('56ba258a98f0767514d0ee0b')
        },{
            _id: ObjectId('56ba7e9820accb40239baedf'),
            name: 'Name B',
            _partition: ObjectId('56ba258a98f0767514d0ee0b')
        }
    ]
}

また、必要に応じて親とアセットを更新できるように、それらを Mongoose ドキュメントのままにしたいと考えています。

親で使用し、子ドキュメントを保持する新しいアイテムを作成することでこれを達成できましたtoJSONが、明らかに親ドキュメントは実際のドキュメントではありません..

これを試したときに発生し続けたエラーは、スキーマにないドキュメントに新しい要素を作成できなかったというものでした。

子をクエリするプロミスを返す仮想アイテムを作成するようなことができることは知っていますが、1つの応答を返す1つの静的メソッドを探しています(仮想アイテムをプロミスまたはコールバックとして処理する必要がないことを意味します) )

これが可能かどうか教えてください。ありがとう!

4

2 に答える 2

1

参考までに、これは明らかに不可能です。いくつか試してみましたが、うまくいかないようです。

于 2016-02-21T16:43:24.670 に答える