このドキュメントに従って、事前に集計されたパフォーマンス メトリックをシャード mongodb に保存しようとしています。
私はそのように upsert を使用して存在する場合と存在しない場合があるレコード内の分のサブドキュメントを更新しようとしています (self.collection
は pymongo コレクションインスタンスです):
self.collection.update(query, data, upsert=True)
クエリ:
{ '_id': u'12345CHA-2RU020130304',
'metadata': { 'adaptor_id': 'CHA-2RU',
'array_serial': 12345,
'date': datetime.datetime(2013, 3, 4, 0, 0, tzinfo=<UTC>),
'processor_id': 0}
}
データ:
{ 'minute': { '16': { '45': 1.6693091}}}
問題は、この場合、「分」サブドキュメントには常に最後のhour: { minute: metric}
エントリしかなく、分サブドキュメントは他の時間の新しいエントリを作成せず、常に 1 つのエントリを上書きすることです。
$set スタイルのデータ エントリでもこれを試しました。
{ '$set': { 'minute': { '16': { '45': 1.6693091}}}}
でも結局同じ。
私は何を間違っていますか?