Tôi cần phải đẩy nhiều giá trị vào một mảng trong mongoose bằng một cuộc gọi. Tôi đã thử làm điều đó bằng cách sử dụng một mảng nhỏ hơn nhưng mảng được đưa vào như là một mảng phụ.Làm thế nào để đẩy một mảng các đối tượng vào một mảng trong mongoose với một cuộc gọi?
var kittySchema = new mongoose.Schema({
name: String,
values: [Number]
});
var Kitten = db.model('Kitten', kittySchema);
Kitten.update({name: 'fluffy'},{$push: {values:[2,3]}},{upsert:true},function(err){
if(err){
console.log(err);
}else{
console.log("Successfully added");
}
});
Kết quả của cách gọi mã trên ba lần cho kết quả dưới đây:
{ "_id" : ObjectId("502b0e807809d79e84403606"), "name" : "fluffy", "values" : [ [ 2, 3 ], [ 2, 3 ], [ 2, 3 ] ] }
Trong khi những gì tôi muốn là một cái gì đó như thế này:
{ "_id" : ObjectId("502b0e807809d79e84403606"), "name" : "fluffy", "values" : [ 2, 3 ,2 ,3, 2, 3] }
Một điều tôi nhận thấy là loại trong mảng (giá trị) được xác định là số, sau đó sẽ không tùy chọn 'nghiêm ngặt' đảm bảo rằng bất cứ điều gì khác hơn số không được chèn vào? Trong trường hợp này, một mảng khác được phép chèn vào.
NB: bạn cũng có thể muốn xem xét [$ addToSet] (http: // www .mongodb.org/display/DOCS/Updating/# Updating-% 24addToSetand% 24each), có thể được sử dụng để chỉ thêm các giá trị vào một mảng nếu chúng chưa có. – Stennie
Cảm ơn Stennie! Điều đó hoạt động. Tôi đã bỏ lỡ phần này trong tài liệu. –
@Stennie này chỉ hoạt động cho các phần tử riêng lẻ, không phải cho các mảng nối. – Tom