Tôi muốn đẩy thêm vào đầu tập hợp của mình thay vì được thêm vào cuối khi tôi thực hiện việc đẩy $ mongo.
Có thể thực hiện cập nhật đẩy nguyên tử để thêm phần tử làm phần tử đầu tiên thay vì phần tử cuối cùng không?
2014 cập nhật: yes you can.
Tôi muốn đẩy thêm vào đầu tập hợp của mình thay vì được thêm vào cuối khi tôi thực hiện việc đẩy $ mongo.
Có thể thực hiện cập nhật đẩy nguyên tử để thêm phần tử làm phần tử đầu tiên thay vì phần tử cuối cùng không?
2014 cập nhật: yes you can.
Tính đến MongoDB v2.5.3, có một $position
điều hành mới mà bạn có thể bao gồm cùng với các nhà điều hành $each
như một phần của truy vấn $push
để chỉ định vị trí trong mảng mà bạn muốn chèn giá trị.
Dưới đây là một ví dụ từ trang tài liệu để thêm các yếu tố 20 và 30 tại chỉ số mảng của 2 ::
db.students.update({ _id: 1 },
{ $push: { scores: {
$each: [ 20, 30 ],
$position: 2
}
}
}
)
tham khảo: http://docs.mongodb.org/master/reference/operator/update/position/#up._S_position
Thật vậy, điều này sẽ tốt đẹp khi họ đẩy bản phát hành ổn định 2.6. – lostintranslation
Cú pháp '$ push - $ each - $ position: 0' là khó xử. Vui lòng giúp [triển khai $ unshift bằng cách bỏ phiếu cho vấn đề này] (https://jira.mongodb.org/browse/SERVER-19974). –
Cũng chỉ hoạt động để cập nhật, đúng không? Thêm một mục MỚI vào mảng sẽ không hoạt động. – backdesk
Câu hỏi tương tự đã được hỏi cách đây vài ngày. Thật không may, câu trả lời ngắn gọn là "không", nhưng có một yêu cầu mở cho tính năng này.
https://jira.mongodb.org/browse/SERVER-2191 - "$ push() để phía trước của mảng"
Có một số thông tin cũng như một công việc xung quanh có thể trên các chủ đề khác: "mảng Sử dụng MongoDB như ngăn xếp" - Use MongoDB array as stack
Hy vọng ở trên sẽ hữu ích và giúp bạn tìm một công việc có thể chấp nhận được.
Aha. Có vẻ như Chris Shain đã đánh tôi với cú đấm! Tôi không thấy nhận xét trước khi đăng. – Marc
@Monkey: Kể từ v2.5.3, bạn có thể sử dụng cú pháp '$ push - $ each - $ position: 0'. Bạn có thể vui lòng cập nhật câu trả lời được chấp nhận không? Ngoài ra, vì cú pháp đó là khó xử, hãy giúp [triển khai $ unshift bằng cách bỏ phiếu về vấn đề này] (https://jira.mongodb.org/browse/SERVER-19974). –
Sử dụng chỉ số tiêu cực với $ đặt ra cho thêm vào trước, thử nghiệm trong Mongo v2.2:
> db.test.insert({'array': [4, 5, 6]})
> db.test.find()
{ "_id" : ObjectId("513ad0f8afdfe1e6736e49eb"),
"array" : [ 4, 5, 6 ] }
//prepend 3
> db.test.update({"_id" : ObjectId("513ad0f8afdfe1e6736e49eb")},
{'$set': {'array.-1': 3}})
> db.test.find()
{ "_id" : ObjectId("513ad0f8afdfe1e6736e49eb"),
"array" : [ 3, 4, 5, 6 ] }
//prepend 2
> db.test.update({"_id" : ObjectId("513ad0f8afdfe1e6736e49eb")},
{'$set': {'array.-1': 2}})
> db.test.find()
{ "_id" : ObjectId("513ad0f8afdfe1e6736e49eb"),
"array" : [ 2, 3, 4, 5, 6 ] }
//prepend 1
> db.test.update({"_id" : ObjectId("513ad0f8afdfe1e6736e49eb")},
{'$set': {'array.-1': 1}})
> db.test.find()
{ "_id" : ObjectId("513ad0f8afdfe1e6736e49eb"),
"array" : [ 1, 2, 3, 4, 5, 6 ] }
Giải pháp tuyệt vời! – ORL
Có cách nào để đặt nhiều giá trị cho sự khởi đầu của mảng không? – Modi
Giải pháp tuyệt vời. Hình như mongo 2.6 (ổn định) sẽ bao gồm một không làm việc xung quanh. – lostintranslation
Xem http://stackoverflow.com/questions/ 10094573/use-mongodb-array-as-stack # comment12929388_10094573 –
có thể trùng lặp [làm cách nào để thêm giá trị vào đầu một mảng trong mongodb?] (Http://stackoverflow.com/questions/7936019/how-do -i-add-a-giá trị-to-the-top-of-an-mảng-trong-mongodb) –