0

このドキュメントに関連付けられているドキュメントのカウンターとして配列を使用したいと考えています。各配列要素はドキュメントに対応し、その配列内の数値はそのドキュメントに関するデータの一部に対応します。これらの数値は、関連付けられたドキュメントには保存されないため、「プライマリ」ドキュメントのフィールドと「関連付けられた」ドキュメントの配列内のデータに対してクエリを実行できます。

$inc と配列の初期化の気まぐれのため​​、これを行う方法はないようです。

> use foo
switched to db foo
> db.foo.save({id: []})
> db.foo.update({}, {$inc: {'id.4': 1}})
> db.foo.find().pretty()
{
    "_id" : ObjectId("5279b3339a056b26e64eef0d"),
    "id" : [
        null,
        null,
        null,
        null,
        1
    ]
}
> db.foo.update({}, {$inc: {'id.2': 1}})
Cannot apply $inc modifier to non-number

null をインクリメントする方法や、配列をゼロで初期化する方法はありますか?

代替手段は、配列値をキー/値形式で格納することです。これは疎配列になりますが、配列に upsert する方法がないため、その代替手段は実行不可能になります。

4

1 に答える 1