복붙노트

[MONGODB] 요소를 통과하는 부분 (...)를 사용할 수 없습니다

MONGODB

요소를 통과하는 부분 (...)를 사용할 수 없습니다

mongod 3.6을 실행하고이 예제를 사용하는 시도.

다음은 샘플 데이터는 다음과 같습니다

> db.students2.find().pretty()
{
    "_id" : 1,
    "grades" : [
        {
            "grade" : 80,
            "mean" : 75,
            "std" : 8
        },
        {
            "grade" : 85,
            "mean" : 90,
            "std" : 6
        },
        {
            "grade" : 85,
            "mean" : 85,
            "std" : 8
        }
    ]
}
{
    "_id" : 2,
    "grades" : [
        {
            "grade" : 90,
            "mean" : 75,
            "std" : 8
        },
        {
            "grade" : 87,
            "mean" : 90,
            "std" : 5
        },
        {
            "grade" : 85,
            "mean" : 85,
            "std" : 6
        }
    ]
}

나는 예에 규정 된 모든 위치 연산자를 사용하려고 시도하고있다 :

> db.students2.update({}, { $inc: { "grades.$[].std" : -2 } }, {multi: true})
WriteResult({
    "nMatched" : 0,
    "nUpserted" : 0,
    "nModified" : 0,
    "writeError" : {
        "code" : 16837,
        "errmsg" : "cannot use the part (grades of grades.$[].std) to traverse the element ({grades: [ { grade: 80.0, mean: 75.0, std: 8.0 }, { grade: 85.0, mean: 90.0, std: 6.0 }, { grade: 85.0, mean: 85.0, std: 8.0 } ]})"
    }
})

왜이 오류 메시지가 발생? 내가 제대로 설명서를 따르지 않는 건가요?

해결법

  1. ==============================

    1.MongoDB를위한 더 높은 버전으로 낮은 버전에서 전환 할 때 당신은 당신의 MongoDB를위한 세트 setFeatureCompatibilityVersion에 가지고있는

    MongoDB를위한 더 높은 버전으로 낮은 버전에서 전환 할 때 당신은 당신의 MongoDB를위한 세트 setFeatureCompatibilityVersion에 가지고있는

    당신은 단순히 몽고 쉘에서이 명령을 실행하여 설정할 수 있습니다

    db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
    
  2. from https://stackoverflow.com/questions/51777183/cannot-use-the-part-to-traverse-the-element by cc-by-sa and MIT license