$ lookup возвращает [] 0 элементов массива - PullRequest
0 голосов
/ 24 марта 2020

Я делаю проект в MongoDB и начинаю пытаться выучить и применить знания.

Моя первая коллекция - Фильмы (похожа на это):

{
    "Movie_ID": {
        "$numberInt": "31"
    },
    "Movie_Name": "Tanhajhi",
    "Release_Date": {
        "$date": {
            "$numberLong": "1578643200000"
        }
    },
    "Genre": "Action"
}

Моя вторая Рейтинг коллекции (вот так):

{
    "Rating_ID": {
        "$numberInt": "61"
    },
    "Person_ID": {
        "$numberInt": "11"
    },
    "Movie_ID": {
        "$numberInt": "31"
    },
    "Theatre_ID": {
        "$numberInt": "21"
    },
    "Movie_Rating": {
        "$numberInt": "5"
    },
    "Theatre_Rating": {
        "$numberInt": "2"
    }
}

Я пытаюсь выяснить, у какого мов ie какой отзыв, по каким людям. Поэтому я написал такой код:

db.Movies.aggregate(
    [
        {
            $lookup:   
                {
                    from: "Ratings",
                    localField: "Movie_ID",
                    foreignField: "Movie_ID",
                    as: "M_Ratings"
                }
        }
    ]
)

Но приведенный выше код возвращает пустой массив (в нем 0 элементов).

1 Ответ

0 голосов
/ 24 марта 2020

ваш $lookup отличный, проблема в определении полей int -> "$numberInt": "61"

, если вы хотите, чтобы поле было числовым c, 2 лучших варианта:

"Movie_ID": 31, // Your number will be double 
"Movie_ID": NumberInt("31"), // Your number will be int32 

В любом случае $lookup должен прекрасно работать после этого исправления (для всех определенных вами полей типа int)

берите отсюда,

use your.own_db

db.Movies.insertOne(
   {
    "Movie_ID": NumberInt("31"),
    ,
    "Movie_Name": "Tanhajhi",
    "Release_Date": {
        "$date": {
            "$numberLong": "1578643200000"
        }
    },
    "Genre": "Action"
}
)

db.Ratings.insertOne(
   {
    "Rating_ID": {
        $numberInt: "61"
    },
    "Person_ID": {
        "$numberInt": "11"
    },
    "Movie_ID": {
        "$numberInt": "31"
    },
    "Theatre_ID": {
        "$numberInt": "21"
    },
    "Movie_Rating": {
        "$numberInt": "5"
    },
    "Theatre_Rating": {
        "$numberInt": "2"
    }
}
)

db.Movies.find()
db.Ratings.find()
enter code here
...