1
위치 연산자를 사용하여 feathersjs 업데이트 기능으로 데이터를 업데이트하는 데 문제가 있습니다. 나는 MongoDB를 한 다음 JSON 문서가 :위치 연산자가 feathersjs 쿼리 업데이트와 함께 작동하지 않습니다.
{
"name" : "John Jonson",
"payments" : [
{
"year" : 2016,
"payments" : [
{
"comment" : "",
"title" : "1 payment",
"amount" : 100,
"date" : ISODate("2016-12-20T15:04:09.647Z")
}
]
},
{
"year" : 2015,
"payments" : [
{
"comment" : "first payment",
"title" : "02/04/2015",
"amount" : 150,
"date" : ISODate("2016-12-20T15:10:04.499Z")
},
{
"comment" : "second payment",
"title" : "05/06/2015",
"amount" : 150,
"date" : ISODate("2016-12-20T15:10:04.499Z")
}
]
}
]
}
나는 단지 거기 년이고 2015 payments.payments 배열에 푸시를 통해 업데이 트 객체를이 문서를보십시오
var data = {
_id: "5a16e032b7a982bc9b7bd7fe",
payment: {
"amount": 200,
"title": "09/02/2016",
"comment": ""
}
}
app.service('payments').update({_id: data._id, "payments.year": 2015}, {$push: { "payments.$.payments": data.payment }}, { "multi": true }, (error, result) => {
console.log(error)
console.log(result)
});
I 수신 기능 이상이라고하면 다음과 같은 메시지 :
"exception: The positional operator did not find the match needed from the query. Unexpanded update: payments.$.payments"
하지만 몽고 쉘이 문을 사용할 때, 모든 괜찮 :
db.payments.update({"_id" : ObjectId("5a16e032b7a982bc9b7bd7fe"), "payments.year": 2015}, {$push: { "payments.$.payments": {"amount":200,"title":"09/02/2016","comment":""}}}, {"multi": true});
* 문제가 해결되었습니다. *
var query = {_id: data._id, "payments.year": 2015}
app.service('payments').patch(null, {$push: { "payments.$.payments": data.payment }}, { query }, (error, result) => {
console.log(error)
console.log(result)
});
나는 단 하나 개의 질문이 : 나는 패치 방법을 사용합니다. 왜 위의 코드는 잘 작동하지만 아래의 코드는 제대로 작동하지 않습니까?
app.service('payments').patch(null, {$push: { "payments.$.payments": data.payment }}, {_id: data._id, "payments.year": 2015}, (error, result) => {
console.log(error)
console.log(result)
});
이것이 도움이 되었습니까 @ SeaDog? – sagannotcarl