2017-11-19 7 views
0

나는 유성에 대해 연구 중이다.mongodb에서 중첩 스키마를 업데이트하는 방법은 무엇입니까?

Posts.insert({ 
        post:post, 
        author:username, 
        date:date, 
        createdAt:new Date(), 
        comment:{ 
         commentBy:'', 
         commentMsg:'' 
        }, 
        userId:Meteor.userId() 
       }) 

처음에는 주석 부분이 비어있을 것입니다 : 내 스키마 system.For 포스트 삽입을 commmenting와 블로그를 만들기 위해 시도하고 이것이다. 특정 게시물에 대한 사용자 의견이있을 때 주석 섹션이 채워집니다. 나는이 스키마 업데이트하려고 :

Posts.update(thisPost,{$addToSet:{comment.commentedBy:Name,comment.commentMsg:post}}); 

을하지만 올바른 방법으로 할 양반 아되지는?

답변

1

를 배열해야 여러 의견에게 필드를 입력하십시오.

comments:[{ 
    Commentedby:String, 
    CommentedMsh:string 
}] 

할 수 있습니다 사용 $의 addtoset 또는 $ 푸시, 하나

db.update({_id:post._id},{$push:{comments:newComment}}) 

또는

db.update({_id:post._id}, { $addToSet: { comments : comment }); 
0

나는이 같은, 어떤 점 참조 주위에 따옴표를 넣어 필요가 있다고 생각 :

Posts.update(thisPost,{$addToSet:{"comment.commentedBy":Name,"comment.commentMsg":post}}); 

그렇게하지 않으면, 컴파일러 시도하고 있지 무엇을 어떤 로컬 객체 참조 때문에 그 이유는 원한다면 문자열로 전달하면 Mongo가 예상대로 처리합니다.

0

제공된 정보에서 발견 할 수있는 두 가지 문제점이 있습니다. 첫 번째는 comment 속성은 배열/수집해야한다, 그래서 당신은 (댓글로 변경) 다음으로 시작해야한다는 것입니다 : 문서에 따르면,

Posts.insert({ 
    ... 
    comments:[], 
    ... 
}) 

을 그리고 두 번째, 가장 중요한 당신이 질문에 대답하기 위해 업데이트의 첫 번째 매개 변수는 선택기, ObjectID 또는 문자열 ID 여야합니다. https://docs.meteor.com/api/collections.html#Mongo-Collection-update

그래서 업데이트는 다음과 같아야합니다

var comment = { commentBy: 'user-id', commentMsg: 'le-message' } 
Posts.update(post._id, { $addToSet: { comments : comment });