У нас есть две коллекции, первая определяет файлы, упрощенно, например:
{
_id: "00a00680-0e77-11e7-b757-edf2b0aec1f9",
name: "someFileName.txt",
numRows: 17,
statusCode: 10
},
{
_id: "0653b830-ac06-11e6-b5e3-7f4580599144",
name: "someOtherFileName.txt",
numRows: 134,
statusCode: 12
},
...
и связанная коллекция statusCodes:
{
statusCode: 10,
statusCodeDesc, "This is the description for status code 10"
},
{
statusCode: 12,
statusCodeDesc, "This is the description for status code 12"
}
...
Теперь мы используем агрегацию и проекцию для получения желаемого результата, в настоящее время проекция выглядит следующим образом:
db.getCollection('files').aggregate([
{$match: {_id: "00a00680-0e77-11e7-b757-edf2b0aec1f9"}},
{ "$project": {
"id": "$_id",
"name": "$name",
"statusCode": "$statusCode"
}}
])
, который выдает желаемый результат:
{
_id: "00a00680-0e77-11e7-b757-edf2b0aec1f9",
name: "someFileName.txt",
numRows: 17,
statusCode: 10
}
однако мы хотим включить соответствующее описание статуса из коллекции statusCodes, чтобы получить следующее:
{
_id: "00a00680-0e77-11e7-b757-edf2b0aec1f9",
name: "someFileName.txt",
numRows: 17,
statusCode: 10,
statusCodeDesc: "This is the description for status code 10"
}
есть идеи?