Я новичок в узле js с программированием mongodb. Я использую модуль mongodb
и хочу выполнить публикацию сообщения с публичной информацией пользователя. Код, который я сейчас использую, выглядит следующим образом:
db.collection('post').aggregate({
'$match': { category: 'video', status: 'online' },
'$lookup':
{
from: 'user',
localField: 'user',
foreignField: '_id',
as:'user'
},
'$project':
{ text: 1,
imgs: 1,
video: 1,
datetime: 1,
user: 1,
category: 1,
marketplace: 1,
tags: 1 } }
})
.toArray(function(err,posts){console.log(posts)})
но ничего не работает. Я получаю сообщения, даже если категория не music
и поиск не привязывает объект к массиву результатов.
UPDATE
агрегат не работает, даже если параметр $ match используется только как агрегатный запрос
возвращенные коллекции
[
{
"_id":"5aed6cbbd8362bcc0f2d95ab",
"category":"music",
"video":"",
"imgs":[],
"videoImage":false,
"text":"post text",
"tags":{["first","try"]},
"datetime":1525509307968,
"user":"FuRRTBEYBmCSDPJkN",
"status":"online","marketplace":null},
{
"_id":"5aedc26c6defa3d3a6de7126", "category":"music",
"video":"https://www.youtube.com/embed/1yvLYJ2Fe_c",
"imgs" [],
"videoImage":"https://i.ytimg.com/vi/1yvLYJ2Fe_c/hqdefault.jpg",
"text":"second post text second post text second post text ",
"tags":{["second","post"]},
"datetime":1525531244425,
"user":"FuRRTBEYBmCSDPJkN",
"status":"online",
"marketplace":null
}
]
ожидаемые результаты будут
[
{
"_id":"3aed6cbbd8362bcc0f2d95ab",
"category":"video",
"video":"",
"imgs":[],
"videoImage":false,
"text":"post text",
"tags":{["first","video"]},
"datetime":1525509307968,
"user": {_id: 'FuRRTBEYBmCSDPJkN', username: 'user1',img: '/path/to/the/image.png'},
"status":"online","marketplace":null},
{
"_id":"4aedc26c6defa3d3a6de7126", "category":"video",
"video":"https://www.youtube.com/embed/1yvLYJ2Fe_c",
"imgs" [],
"videoImage":"https://i.ytimg.com/vi/1yvLYJ2Fe_c/hqdefault.jpg",
"text":"second video ",
"tags":{["second","video"]},
"datetime":1525531244425,
"user":{_id: 'FuRRTBEYBmCSDPJkN', username: 'user1',img: '/path/to/the/image.png'},
"status":"online",
"marketplace":null
}
]