上限のある配列に新しい値をプッシュしようとしています:
db.messages.insert({name:"test1"})
db.messages.update({name:"test1"}, {"$push":{"output": {"$each": ["test1"], "$slice": -10}}})
db.messages.update({name:"test1"}, {"$push":{"output": {"$each": ["test2"], "$slice": -10}}})
したがって、更新を初めて実行すると、期待どおりの結果が得られます。
{
"_id" : ObjectId("51d482ee7252cb3f7eb81ac1"),
"name" : "test1",
"output" : [
"test1"
]
}
しかし、2回目の更新後、次のようになります。
{
"_id" : ObjectId("51d482ee7252cb3f7eb81ac1"),
"name" : "test1",
"output" : [
"test1",
{
"$each" : [
"test2"
],
"$slice" : -10
}
]
}
私が次のことを期待したとき:
{
"_id" : ObjectId("51d482ee7252cb3f7eb81ac1"),
"name" : "test1",
"output" : [
"test1",
"test2"
]
}
おそらく、$slice で $push を使用する方法を理解していませんが、ドキュメントを見て、何が間違っているのかわかりませんでした。キャップ付き配列に新しい要素を追加するにはどうすればよいですか?