[MONGODB] 오브젝트의 배열에서 갱신 값 몽구스
MONGODB오브젝트의 배열에서 갱신 값 몽구스
객체의 값을 업데이트하는 방법이 있나요?
{
_id: 1,
name: 'John Smith',
items: [{
id: 1,
name: 'item 1',
value: 'one'
},{
id: 2,
name: 'item 2',
value: 'two'
}]
}
내가 항목에 대한 이름과 값 항목을 업데이트하고 싶은 말은하자 어디 ID = 2;
나는 / 몽구스 w 다음을 시도했다 :
var update = {name: 'updated item2', value: 'two updated'};
Person.update({'items.id': 2}, {'$set': {'items.$': update}}, function(err) { ...
이 방법에 문제는 내가 id 필드를 잃고, 따라서이 경우에는, / 업데이트 전체 개체를 설정하는 것입니다.
배열에서 특정 값을 설정하지만, 혼자 다른 값을 떠날 몽구스에 더 좋은 방법이 있나요?
나는 또한 단지 사람에 대한 조회했다 :
Person.find({...}, function(err, person) {
person.items ..... // I might be able to search through all the items here and find item with id 2 then update the values I want and call person.save().
});
해결법
-
==============================
1.당신이 가까이있어; 당신은 그렇게 할 수있는 $ 업데이트 연산자의 사용에 점 표기법을 사용한다 :
당신이 가까이있어; 당신은 그렇게 할 수있는 $ 업데이트 연산자의 사용에 점 표기법을 사용한다 :
Person.update({'items.id': 2}, {'$set': { 'items.$.name': 'updated item2', 'items.$.value': 'two updated' }}, function(err) { ...
-
==============================
2.
model.update({"_id": 1, "items.id": "2"}, {$set: {"items.$.name": "yourValue","items.$.value": "yourvalue"}})
MongoDB의 문서
-
==============================
3.각 문서의 경우, 업데이트 운영자 $ 세트는 여러 값을 설정할 수 있습니다, 그래서 오히려 항목 배열의 전체 개체를 교체하는 것보다, 개별적으로 객체의 이름과 값 필드를 설정할 수 있습니다.
각 문서의 경우, 업데이트 운영자 $ 세트는 여러 값을 설정할 수 있습니다, 그래서 오히려 항목 배열의 전체 개체를 교체하는 것보다, 개별적으로 객체의 이름과 값 필드를 설정할 수 있습니다.
{'$set': {'items.$.name': update.name , 'items.$.value': update.value}}
-
==============================
4.그 일을위한 몽구스 방법이있다.
그 일을위한 몽구스 방법이있다.
const itemId = 2; const query = { item._id: itemId }; Person.findOne(query).then(doc => { item = doc.items.id(itemId ); item["name"] = "new name"; item["value"] = "new value"; doc.save(); //sent respnse to client }).catch(err => { console.log('Oh! Dark') });
-
==============================
5.몽구스에서 우리는 간단한 배열처럼, 업데이트 할 수 있습니다
몽구스에서 우리는 간단한 배열처럼, 업데이트 할 수 있습니다
user.updateInfoByIndex(0,"test") User.methods.updateInfoByIndex = function(index, info) ={ this.arrayField[index]=info this.save() }
-
==============================
6.몽구스, 우리는 방법을 다음과 같은 특정 값에 점 (.) 표기법 내부 $ 세트를 사용하여 배열 값을 업데이트 할 수 있습니다
몽구스, 우리는 방법을 다음과 같은 특정 값에 점 (.) 표기법 내부 $ 세트를 사용하여 배열 값을 업데이트 할 수 있습니다
db.collection.update({"_id": args._id, "viewData._id": widgetId}, {$set: {"viewData.$.widgetData": widgetDoc.widgetData}})
-
==============================
7.
update( {_id: 1, 'items.id': 2}, {'$set': {'items.$[]': update}}, {new: true})
여기에 $에 대한 문서는 [].
-
==============================
8.기억해야 할 한 가지가있다, 당신은 하나 개 이상의 조건을 기준으로 배열에서 객체를 검색 할 때 다음 elemMatch $를 사용
기억해야 할 한 가지가있다, 당신은 하나 개 이상의 조건을 기준으로 배열에서 객체를 검색 할 때 다음 elemMatch $를 사용
Person.update( { _id: 5, grades: { $elemMatch: { grade: { $lte: 90 }, mean: { $gt: 80 } } } }, { $set: { "grades.$.std" : 6 } } )
여기에 문서입니다
from https://stackoverflow.com/questions/15691224/mongoose-update-values-in-array-of-objects by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 유성 문서 작업의 메시지 카운트 예는 무엇입니까? (0) | 2019.12.04 |
---|---|
[MONGODB] 어떻게 스키마를 정의하지 않고 몽구스를 사용합니까? (0) | 2019.12.04 |
[MONGODB] 몽구스의 다른 스키마를 참조하는 (0) | 2019.12.03 |
[MONGODB] ObjectId가 함수에 Node.js를 Mongoose.js 문자열 (0) | 2019.12.03 |
[MONGODB] MongoDB를 대다 협회 (0) | 2019.12.03 |