19

「n」個のキャンプを持つことができるドキュメント「所有者」があり、キャンプには「インストラクター」があり、インストラクターには「クラス」があります。以前、ネストされた配列でこれを達成しようとしましたが (以下の私の投稿へのリンクを参照)、位置演算子 "$" はそれほど深くネストされないことがわかりました。 MongoDB: 既存の配列への配列の追加

ただし、回避策は配列の代わりにオブジェクト コレクションを使用することであることがわかりました。追加の「キャンプ」を追加するには、「$set」で「更新」を使用する必要があると想定していますが、すべてを行うたびに、挿入された前のキャンプを上書き (更新) します。

以下は、私が達成しようとしている階層構造です。

owner = {

    firstName: 'john',
    lastName: 'smith',
    ownerEmail: 'john.smith@gmail.com',

    camps : {

        {
            name: 'cubs-killeen',
            location: 'killeen'
        },

        {
            name: 'cubs-temple',
            location: 'temple'
        },

        instructors : {

            {
                firstName: 'joe',
                lastName : 'black'
            },

            {
                firstName: 'will',
                lastName : 'smith'
            }        
        }

    }

}

私も次のことを試しています:

db.owners.update({ownerEmail:'john.smith@gmail.com'}, {$set: { camps:{ {name:'cubs-killeen'} } }})

しかし、これは予期しない識別子 { エラーをスローします。

上記の構造を実現するためのいくつかのサンプル mongo コマンドに関するヘルプは、非常に高く評価されます。

V/R

クリス

4

2 に答える 2

0
var newObject = {usuario: req.body.usuario, fecha: req.body.fecha, edit: 
req.body.edit};

await Documentos.findByIdAndUpdate(id,
 { deleted_doc: true,
 $push: { history: newObject } }); 
res.json({ status: 'Documentos Updated' });
于 2020-11-04T17:46:36.040 に答える