2014-09-08 6 views
0

Node.js의 Mongoose를 사용하여 MongoDB에 레코드를 생성하는 동안 원하지 않는 ObjectId 생성이 자동으로 발생합니다. MongoDB에서 생성 된 레코드는 배열 항목의 ObjectId ("540dc9c35ae5b576d96f9d54")를 제외하고는 완벽합니다.MongoDB - 하위 배열 항목에 대한 ObjectId의 원하지 않는 생성

어떻게 하위 배열 항목에 대한 ObjectId 생성을 중단 할 수 있습니까?

또한 "__v"는 무엇입니까 : 0은 mongoDB 행 (C)에 나타 납니까?

다음은,

A. 몽구스 모델 스키마 자세한 내용은 다음과 같습니다

var Result = new Schema ({ 
name : String, 
class : String, 
result : [{ 
    subject : String,  
    marks : Number 
}] 
}); 

B. 실행 스크립트 : MongoDB를에서 만든

Model.Result.create({ 
     name : “name1”, 
     class : “6th”, 
     result : [{ 
      subject : “math”, 
      marks : 75 
     }] 
}, function(err){}); 

C. 행 :

{ 
"name" : "name1", 
"class" : 6, 
"_id" : ObjectId("540dc9c35ae5b576d96f9d53"), 
"result" : [ 
      { 
       "subject" : "math", 
       "_id" : ObjectId("540dc9c35ae5b576d96f9d54"), 
       "marks" : 75 
      }], 
"__v" : 0 
} 

답변

2

_id를 fal로 설정하면됩니다. se 하위.

__v mongoose가 배열 색인의 변경 사항을 추적하는 데 사용하는 버전 키입니다. 결과 [0]을 업데이트하려고하면 실제로 원하는 행을 업데이트합니다. 누군가가 귀하의 업데이트보다 앞서 $ 밀어 넣기를하는 경우에 대비하여 잘못된 하위 문서를 업데이트하게됩니다. 자세한 내용은 here을 참조하십시오.

+0

좋아요! 그것은 나를 많이 도왔다. 감사합니다. – ajay

+0

model.create를 사용하여 새 행을 작성한 후에 ObjectId를 어떻게 얻을 수 있습니까? – ajay

관련 문제