배열 내의 각 객체에도 객체 배열이 들어있는 객체 배열이 포함 된 mongoose를 사용하여 문서를 업데이트해야합니다. 이것에 대한노드와 몽구스. 객체 배열 내부에서 객체 배열 쿼리 및 업데이트
의사 코드는 것 같은 뭔가 '객실'객체의 배열입니다
user.rooms[{where roomname = 'abc123'}].messages.push({message: 'hello', from: 'james'})
.
'messages'는 자체적으로 room 배열에있는 room 객체 내부에있는 객체 배열입니다.
배열에 $ in mongoose와 $ elemMatch를 사용하는 것과 관련하여 쿼리를 작성하는 방법에 대해 혼란 스럽습니다. 도트 구문, $ 세트 대 $ 푸시 등 ...
var roomname = 'abc123';
User.findOneAndUpdate({'rooms.name' : room},{ */* WHAT GOES HERE? */* }, {upsert:true} function (err, messagesDoc) {
if (err){
return done(err);
}
if (messagesDoc) {
} else {
}
});
이게 가능합니까? 대신 사용자와 방을위한 별도의 콜렉션을 사용해야합니까?/UPDATE
편집 그래서 나는이 문제를 알아 내려고 노력하고 내가 더 가까워지고 있어요 생각하지만 지금 오류를 얻고있다.
C:\[PATH]\app\node_modules\mongoose\node_modules\mquery\lib\utils.js:
26
if (/ObjectI[dD]$/.test(obj.constructor.name)) {
^
RangeError: Maximum call stack size exceeded
DEBUG: Program node app exited with code 8
나는 또한 내가 쿼리의 첫 번째 부분은 볼 수 추가해야합니다 :
User.findOneAndUpdate({ 'local.rooms.name' : room },
{$push: {'local.rooms.$.messages': chatmessage}},
function(err, doc) {
});
이 내가 점점 오전 오류는 다음과 같습니다
이
내가 지금 사용하고있는 쿼리입니다 일. 내가 그것을 찾기 위해 그것을 찾으면 나는 그 결과를 로그 아웃 할 수있다. 오류를 일으키는 업데이트 개체 인 것 같습니다.