Mongoose 및 MongoDB를 처음 사용하고 중첩 된 배열에있는 필드 값을 업데이트해야하는 시나리오를 구현하려고합니다. 나는이 프런트 엔드에서 선택 될 때마다 특정 옵션의 표를 증가 할 필요가Mongoose - 중첩 된 배열의 필드 값 늘리기
{
"_id" : ObjectId("581999ecf97860b77c1625f6"), // this is userID
"username" : "test",
"__v" : 0,
"polls" : [
{
"url" : "xxxx",
"question" : "city or united",
"_id" : ObjectId("581999ec3ba2b15ad7fbcd50"), //this is questionID
"option" : [
{
"votes" : 0,
"value" : "city",
"_id" : ObjectId("581999ec3ba2b15ad7fbcd52") //this is optionID
},
{
"votes" : 0,
"value" : "united",
"_id" : ObjectId("581999ec3ba2b15ad7fbcd51") //this is optionID
}
]
},
{
"url" : "yyyy",
"question" : "chelsea or arsenal",
"_id" : ObjectId("58199d0ef11835685d3f41b7"),
"option" : [
{
"votes" : 0,
"value" : "chelsea",
"_id" : ObjectId("58199d0ef11835685d3f41b9")
},
{
"votes" : 0,
"value" : "arsenal",
"_id" : ObjectId("58199d0ef11835685d3f41b8")
}
]
}
]
}
다음과 같이
예를 들어, 내 DB 항목입니다.
다음은 지금까지 구현하려고 시도했지만 성공하지 못한 것입니다. 내가 여기 잘못하고있어 뭔가
var PollsSchema = new Schema({
username: String,
polls: [
{
question: String,
option: [
{
value: String,
votes: Number
}
],
url: String
}
]
});
있습니까 : 아래
PollsSchema.methods.submitVote = function(id, callback){
var increment = { $inc: { 'polls.option.$.votes': 1 } };
var query = {
'_id': id.userID,
'polls._id': id.questionID,
'polls.option._id': id.optionID
};
return this.model('Poll').update(query, increment, callback);
};
내 스키마입니까?
시간 내 제안과 제안에 감사드립니다.
MongoDB의 알려진 문제입니다. 이미 열려있는 버그가 있습니다 https://jira.mongodb.org/browse/SERVER-831 –
[Mongo에서 2 레벨 계층 구조가있는 위치 연산자 사용] 가능한 복제본 (http://stackoverflow.com/questions/5038983/) using-position-operator-with two-level-hierarchies-in-mongo) –