호출 한 번으로 객체 배열을 몽구스의 배열로 푸시하는 방법은 무엇입니까?
호출 하나를 사용하여 mongoose의 배열에 여러 값을 푸시해야 합니다.더 작은 배열을 사용하여 시도했지만 배열이 하위 배열로 삽입되고 있습니다.
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");
}
});
위의 코드를 세 번 호출한 결과는 다음과 같습니다.
{ "_id" : ObjectId("502b0e807809d79e84403606"), "name" : "fluffy", "values" : [ [ 2, 3 ], [ 2, 3 ], [ 2, 3 ] ] }
반면에 제가 원하는 것은 다음과 같습니다.
{ "_id" : ObjectId("502b0e807809d79e84403606"), "name" : "fluffy", "values" : [ 2, 3 ,2 ,3, 2, 3] }
배열(값)의 유형이 숫자로 지정되어 있다는 것을 알게 된 또 다른 점은 '엄격한' 옵션을 사용하면 숫자 이외의 항목이 삽입되지 않는다는 것입니다.이 경우 다른 배열을 삽입할 수 있습니다.
(2014년 12월 업데이트) MongoDB2.4 이후에는 다음을 사용해야 합니다.
Kitten.update({name: 'fluffy'}, {$push: {values: {$each: [2,3]}}}, {upsert:true}, function(err){
if(err){
console.log(err);
}else{
console.log("Successfully added");
}
});
사용되지 않음 아래 $push $를 사용하는 다른 솔루션 참조
예제는 비슷하지만 다른 어레이를 다른 어레이로 밀어넣는 대신 각각의 값을 개별적으로 추가하는 $pushAll을 원합니다.values
배열):
var Kitten = db.model('Kitten', kittySchema);
Kitten.update({name: 'fluffy'},{$pushAll: {values:[2,3]}},{upsert:true},function(err){
if(err){
console.log(err);
}else{
console.log("Successfully added");
}
});
또는 $addToSet과 함께 $each 수식어를 사용합니다.
https://docs.mongodb.com/manual/reference/operator/update/addToSet/ #각 수식자
// Existing tags array { _id: 2, item: "cable", tags: [ "electronics", "supplies" ] } // Add "camera" and "accessories" to it db.inventory.update( { _id: 2 }, { $addToSet: { tags: { $each: [ "camera", "accessories" ] } } } )
현재 업데이트된 문서가 지원하지 않습니다.$pushAll
그것은 더 이상 사용되지 않는 것 같습니다.이제 좋은 선택은 다음의 조합을 사용하는 것입니다.$push
&$each
예:
//User schema: {uid: String, transaction: [objects] }
const filter = {"uid": uid};
const update = {
$push: {
transactions: {$each: dataarr}
}
}
User.updateOne(filter, update, {upsert:true}, (err) => {
if(err){
console.log(err)
}
})
통과하다{upsert: true}
필터가 false를 반환하는 경우 삽입할 옵션에 있습니다.
언급URL : https://stackoverflow.com/questions/11963684/how-to-push-an-array-of-objects-into-an-array-in-mongoose-with-one-call
'programing' 카테고리의 다른 글
통화에 어떤 데이터 유형을 사용해야 합니까? (0) | 2023.05.20 |
---|---|
Eclipse IDE에서 창/뷰를 분할 및 분할 해제하는 방법은 무엇입니까? (0) | 2023.05.20 |
iOS 7에서 UITableView 구분자를 수정하는 방법은 무엇입니까? (0) | 2023.05.20 |
string.IsNullOrEmpty(string) 대 string.IsNull 또는화이트스페이스(문자열) (0) | 2023.05.20 |
WPF가 GC를 호출하는 것을 피할 수 있는 모든 방법.반사 외에 수집(2)? (0) | 2023.05.20 |