このドキュメントに関連付けられているドキュメントのカウンターとして配列を使用したいと考えています。各配列要素はドキュメントに対応し、その配列内の数値はそのドキュメントに関するデータの一部に対応します。これらの数値は、関連付けられたドキュメントには保存されないため、「プライマリ」ドキュメントのフィールドと「関連付けられた」ドキュメントの配列内のデータに対してクエリを実行できます。
$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 する方法がないため、その代替手段は実行不可能になります。