この場合、最後の要素を照合するか、実際には逆の順序で照合を処理するという点で、あなたが言っていることを理解しています。これと、position $
演算子は常に「最初の」一致になります。
ただし、 $ push
配列の最後に「追加」することです。しかし、MongoDB 2.6では、 $ position
>
修飾子を使用して、実際には常に配列に「プリペンド」できるようにします。これは、「最も古い」アイテムが最後にあることを意味します。
これを例に取ってください:
db.artest.update(
{ "array": { "$in": [5] } },
{ "$push": { "array": { "$each": [5], "$position": 0 } }},
{ "upsert": true }
)
db.artest.update(
{ "array": { "$in": [5] } },
{ "$push": { "array": { "$each": [6], "$position": 0 } }},
{ "upsert": true }
)
これにより、通常の $ push
の「逆」のドキュメントが作成されます。 行動:
{ "_id" : ObjectId("53eaf4517d0dc314962c93f4"), "array" : [ 6, 5 ] }
または、 $ sort
>
要素を「順序付け」して逆にするためにドキュメントを更新するときの修飾子。ただし、重複する値が保存されている場合は、これが最善のオプションではない可能性があります。
したがって、「最新の」アイテムを「最初」に一致させる場合は、配列を「リバース」に格納することを検討してください。現在、これが「最後からの一致」動作を取得する唯一の方法です。