나는 특정 개체를 필터링하고 부울 필드를 트리거하는 데 어려움을 겪고 초대장에 개체 컬렉션이 있습니다.하위 문서 및 트리거 필터
문서 : 여기
"Invitation" : [
{
"__v" : 0,
"userID" : ObjectId("54afaabd88694dc019d3b628"),//ObjectId of personA
"__t" : "USER",
"_id" : ObjectId("54b5022b583973580c706784"),
"Accepted" : false
},
{
"__v" : 0,
"userID" : ObjectId("54af6ce091324fd00f97a15f"),//ObjectId of personB
"__t" : "USER",
"_id" : ObjectId("54bde39cdd55dd9016271f14"),
"Accepted" : false
}
]
제가 초대 어레이 안에 두 개의 개체가, 3 개 이상의 수있다. 난의 초대를 수락하면 지금의이 인물 및 personB 나에게 초대, 그래서 두 개의 서로 다른 초대 객체 (위 문서의 아이디) 두 사람의 OBJECTID로, 다른 분야를 가진 데이터베이스에 삽입을 전송한다고 가정 해 봅시다 personA,해야합니다 방아쇠 허용 필드 personA 개체 만, 여기 내가 지금까지 노력했지만 예상대로 작동하지 않습니다.
컨트롤러 : 마지막으로
User.find({_id: req.user._id},'Invitation',function(err,docs) {
if (err) {
console.log(err);
}
var results = [];
async.each(docs,function(doc,callback) {
async.each(doc.Invitation,function(invite,callback) {
User.findOneAndUpdate(
{'_id': doc._id, 'Invitation._id': invite._id},
{'$set': {'Invitation.$.Accepted': !invite.Accepted}},
function(err,doc) {
results.push(doc);
callback(err);
}
);
},callback);
},function(err) {
if (err)
console.log(err);
console.log('end'+results);
});
});
나는 인물의 인물 다음 허용 필드의 초대를 수락하는 경우처럼 하나의 요소를 필터링하거나을 반대하는 데 사용할 수있는 쿼리를 찾고 있어요 object를 true로 설정해야합니다. 약간의 로직이 제공된다면 정말 도움이 될 것입니다. 는
내가 게시 한 코드 안에 코드를 넣어 보았습니다. 결과는'null'이고, 반복은 async.each를 사용해야합니다. 그래서 async.each를 사용하여 응답을 확장하는 방법을 알려주십시오. –