변수가 정의되지 않았습니다. MongoDB $ function

Lars Wissler

네, 혼란 스럽습니다. https://docs.mongodb.com/manual/reference/operator/aggregation/function/#exp._S_function에 설명 된대로 $ function 연산자를 사용하여 문서를 찾으려고합니다 .

내 모델 :

const newsSchema = new mongoose.Schema({
news_id: {
    type: mongoose.Schema.Types.ObjectId,
    unique: true,
    index: true
},
created_at: { type: String, default: Date.now().toString() },
updated_at: { type: String, default: Date.now().toString() },
Company_id: [{type: mongoose.Schema.Types.ObjectId}],
Stock_id: [{type: mongoose.Schema.Types.ObjectId}],
newsItem: {
    date: {type: String},
    title: { type: String },
    summary: { type: String },
    url: { type: String, unique: true },
    content: { type: String }
}
};

내 코드 시도 :

newsModel.aggregate([
        {$match: {$function: {
            body: matchArrToArr(matchArr, Company_id),
            args: [ "$Company_id" ],
            lang: "js"
         }}}
    ])

matchArr은 주변 함수에서 전달하는 변수이고 Company_id뉴스 문서의 ' Company_id ' 배열이어야합니다 . 그러나 함수를 실행하면 ' Company_id is not defined ' 오류 가 반환됩니다. 나는 그것을 정의하지 않았지만 어떻게 Company_id 필드를 함수에 가져 오는지 이해가 됩니다.

또한 find ($ expr : {$ function : ... 같은 결과와 $ where : ... with this.Company_id . 첫 번째 경우 동일한 오류. 두 번째 경우 'this' 에는 내 호출 JS 함수의 상태가 있으며 DB 문서가 아닙니다.

내가 실제로하려고하는 것 : Company_id 배열의 ID 중 하나가 내가 전달하는 ID 중 하나와 일치하는 모든 문서를 반환하고 싶습니다. $ function없이 더 좋은 집계 방법이 있다면 그것에 대해 열려 있습니다. 그러나 나는 또한 내 $ function 표현식에서 내가 뭘 잘못하고 있는지 이해하고 싶습니다.

감사!

디만 스 바트

이것이 당신이 원하는 것입니다.

let someCompany_id = "60278ce8b370ff29b83226e7";

db.news.find(
    {
        $expr: {
            $function: {
                body: function(company_ids, someCompany_id) {
                    let _ids= company_ids.map(company_id => company_id.valueOf());
                    return _ids.includes(someCompany_id);
                },
                args: ["$company_id", someCompany_id],
                lang: "js"
            }
        }
    }
)

그러나 이것은 다음과 같이 쉽게 할 수 있습니다.

db.news.find({ 
    company_id: {
        $in: [someCompany_id]
    }
});

그렇다면 왜 함수를 전달하고 싶습니까?

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Meteor, db가 정의되지 않았습니다. 오류 mongodb

분류에서Dev

Mongodb / Monk 'count'가 정의되지 않았습니다.

분류에서Dev

Cloud Function Firebase request.body가 정의되지 않았습니다.

분류에서Dev

변경시 오류 (함수)가 HTMLSelectElement.function에 정의되지 않았습니다.

분류에서Dev

변수 / 매개 변수가 정의되지 않았습니다.

분류에서Dev

변수가 함수에서 정의되지 않았습니다.

분류에서Dev

Javascript의 "ReferenceError : 변수가 정의되지 않았습니다."

분류에서Dev

v-for 변수가 정의되지 않았습니다.

분류에서Dev

반응 분해 변수가 정의되지 않았습니다.

분류에서Dev

MeteorJS-변수가 정의되지 않았습니다.

분류에서Dev

MeteorJS-변수가 정의되지 않았습니다.

분류에서Dev

MeteorJS-변수가 정의되지 않았습니다.

분류에서Dev

Grunt NameError : @gutter 변수가 정의되지 않았습니다.

분류에서Dev

변수 결과가 정의되지 않았습니다.

분류에서Dev

변수가 정의되지 않았습니다.

분류에서Dev

로드시 JavaScript 변수가 정의되지 않았습니다.

분류에서Dev

laravel 변수가 정의되지 않았습니다.

분류에서Dev

변수 "WRITEDUMP"가 정의되지 않았습니다.

분류에서Dev

변수가 정의되지 않았습니다. JS

분류에서Dev

변수 결과가 정의되지 않았습니다. AppleScript

분류에서Dev

thedData 변수가 정의되지 않았습니다. (-2753) AppleScript

분류에서Dev

Python 변수가 정의되지 않았습니다.

분류에서Dev

변수가 정의되지 않았습니다. Javascript + Parse.com

분류에서Dev

NodeJS Socket.io 변수가 정의되지 않았습니다.

분류에서Dev

오류 91 변수가 정의되지 않았습니다.

분류에서Dev

Javascript TypeError : 변수가 정의되지 않았습니다.

분류에서Dev

XXXX 변수가 정의되지 않았습니다.

분류에서Dev

변수가 정의되지 않았습니다.

분류에서Dev

AppleScript : 변수가 정의되지 않았습니다.

Related 관련 기사

  1. 1

    Meteor, db가 정의되지 않았습니다. 오류 mongodb

  2. 2

    Mongodb / Monk 'count'가 정의되지 않았습니다.

  3. 3

    Cloud Function Firebase request.body가 정의되지 않았습니다.

  4. 4

    변경시 오류 (함수)가 HTMLSelectElement.function에 정의되지 않았습니다.

  5. 5

    변수 / 매개 변수가 정의되지 않았습니다.

  6. 6

    변수가 함수에서 정의되지 않았습니다.

  7. 7

    Javascript의 "ReferenceError : 변수가 정의되지 않았습니다."

  8. 8

    v-for 변수가 정의되지 않았습니다.

  9. 9

    반응 분해 변수가 정의되지 않았습니다.

  10. 10

    MeteorJS-변수가 정의되지 않았습니다.

  11. 11

    MeteorJS-변수가 정의되지 않았습니다.

  12. 12

    MeteorJS-변수가 정의되지 않았습니다.

  13. 13

    Grunt NameError : @gutter 변수가 정의되지 않았습니다.

  14. 14

    변수 결과가 정의되지 않았습니다.

  15. 15

    변수가 정의되지 않았습니다.

  16. 16

    로드시 JavaScript 변수가 정의되지 않았습니다.

  17. 17

    laravel 변수가 정의되지 않았습니다.

  18. 18

    변수 "WRITEDUMP"가 정의되지 않았습니다.

  19. 19

    변수가 정의되지 않았습니다. JS

  20. 20

    변수 결과가 정의되지 않았습니다. AppleScript

  21. 21

    thedData 변수가 정의되지 않았습니다. (-2753) AppleScript

  22. 22

    Python 변수가 정의되지 않았습니다.

  23. 23

    변수가 정의되지 않았습니다. Javascript + Parse.com

  24. 24

    NodeJS Socket.io 변수가 정의되지 않았습니다.

  25. 25

    오류 91 변수가 정의되지 않았습니다.

  26. 26

    Javascript TypeError : 변수가 정의되지 않았습니다.

  27. 27

    XXXX 변수가 정의되지 않았습니다.

  28. 28

    변수가 정의되지 않았습니다.

  29. 29

    AppleScript : 변수가 정의되지 않았습니다.

뜨겁다태그

보관