私はあなたがしたいと思う、あなたがコメントを読んだ後に更新したいと思う。 いろいろなやり方があります:
あなたがコメントで言及したブログから、配列サイズが60(毎秒)の単一のドキュメントを作成すると、次のようにドキュメントを更新できます。
db.metrics.update(
{
timestamp_minute: ISODate("2013-10-10T23:06:00.000Z"),
type: ”memory_used”
},
{$set: {“values.59”: 2000000 } }
)
ここで、.59は更新したい秒です。これだけアップサートがtrueに設定されている場合、最初の更新は、文書
あなたが言及したように、C#を使用すると、あなたのような何かを行うことができますが作成され、毎秒更新を呼び出します。
if (second==0){
//insert the "new" timestamped object into the collection
}
else{
var update = Builders<Metric>.Update.Set(e => e.values[second], this.getRandomMetric());
}
これはあなたとの文書を与える必要があります値の配列は59項目です。
しかし、それは実際には私が考えるものではありません、それは単一のドキュメントに格納するだけでなぜですか?
{
timestamp_minute: ISODate("2013-10-10T23:06:01.000Z"),
type: "memory_used",
value: 999999
},
{
timestamp_minute: ISODate("2013-10-10T23:06:37.000Z"),
type: "memory_used",
value: 1000000
},
timestamp_minute: ISODate("2013-10-10T23:06:59.000Z"),
type: "memory_used",
value: 2000000
}
制限付きの履歴に興味がある場合は、capped collectionに入力してください。平均をグループ化して他のコレクションに入れることができます。このために、$out operatorの集計フレームワークを使用することができます。たとえば、1時間あたりのタイプごとの値をグループ化するなど、必要に応じて値をグループ化します。
少し不明ですが、私は "タイムスタンプ"と値でdatetimestampを参照してください。インクリメント(1分あたり)の値は単なる値の配列ですか? – HoefMeistert
値は15分ごとにインクリメントされています。これは実現したい構造です –