2015-01-26 2 views
2

에서 작동하지 않습니다, 하나의 객체는 다음과 같습니다몽고 쿼리 과수원 데이터베이스 수집을 감안할 때 몽구스

{ 
"orchardId" : ObjectId("5391c137722b051908000000"), 
"trees" : [ 
    { 
     "name" : "apple", 
     "fruits" : [] 
    }, 
    { 
     "name" : "pear", 
     "fruits" : [ 
      ObjectId("54c54291d93236150f00004e"), 
      ObjectId("54c542c9d93236150f000062") 
     ] 
    } 
] 
} 

나는 동적으로 특정 나무에 열매를 추가 할. 난 경우

db.orchards.update(
    ({"orchardId": ObjectId("5391c137722b051908000000")}, 
    {"trees" : { $elemMatch: {"name":"apple"}}}), 
    { $push: { "trees.$.fruits": ObjectId("54c542c9d9000000000") }} 
) 

그래서, 바로이 몽구스이 있어야한다 :

orchards.update(
    ({"orchardId": ObjectId.fromString(orchard.id)}, 
    {"trees" : {$elemMatch: {"name": "apple"}}}), 
    {$push: {"trees.$.fruits": ObjectId("54c542c9d9000000000") }},function(err, data){ ... 

을하지만 내가 말하는 오류를 얻을 : 내가 함께 몽고에서이 작업을 수행 할 수 있습니다 알고 [형식 오류 : 수 없다 정의되지 않은 메서드 '경로'호출

$ 연산자를 사용하여 $를 변경하면 mongoose가 위치 연산자 ($)를 처리 할 수없는 것처럼 보입니다.

어떻게 몽구스로이 작품을 만들 수 있습니까? 코드 샘플에서

답변

0

당신은 당신이 중괄호가 있어야 괄호를 가지고, 그래서 대신이 같이해야한다 : 당신의 대답 JohnnyHK에 대한

orchards.update({ 
    "orchardId": ObjectId(orchard.id), 
    "trees": {$elemMatch: {"name": "apple"}} 
    }, 
    {$push: {"trees.$.fruits": ObjectId("54c542c9d9000000000") }}, 
    function(err, data){ ... 
+0

감사합니다! 당신은 객체들을 결합 할 수 있습니다, 그리고 그것이 내가 한 것입니다. 따라서 괄호가 맞습니다. 하지만 : 나는 몽구스 3.8.22에서 작동한다는 것을 알았지 만 버전 3.6.15에서는 그렇지 않습니다. –

+0

두 번째 객체 만 평가할 괄호 안에 두 객체를 넣을 때. 적어도 그것은 당신의 코드를 시도했을 때 일어난 일입니다. – JohnnyHK