Я пытаюсь сделать групповое оповещение, при котором пользователи получают оповещения при доступе к веб-сайту node.js
, клонируя фактический документ для сохранения состояния просмотра отдельного оповещения.Ниже приведены основные примеры данных для коллекции предупреждений .
db.alerts.insertMany([
{
"text" : "Alert 1",
},
{
"text" : "Alert 2",
},
{
"_id": ObjectId("5ba8e5ef24e03456b5cb0afa"),
"text" : "Alert 3",
},
{
"_id": ObjectId("5ba8e5ef24f03456b5cb0afa"),
"text": "Alert 4"
},
{
"text": "Alert 4",
"master_id": ObjectId("5ba8e5ef24f03456b5cb0afa"),
"user_id": 1
},
{
"text": "Alert 3",
"master_id": ObjectId("5ba8e5ef24e03456b5cb0afa"),
"user_id": 1
},
{
"text": "Alert 4",
"master_id": ObjectId("5ba8e5ef24f03456b5cb0afa"),
"user_id": 2
},
]);
Если я использую $lookup
, я могу получить документы, которые не имеют дочерних документов, выполнив следующую команду
db.getCollection('alerts').aggregate([
{
$lookup: {
from: "alerts",
localField: "_id",
foreignField: "master_id",
as: "related_record"
}
},
{
$match: {
"master_id": null,
"related_record": {$eq: []}
},
}
]);
Тем не менее, если мне нужно получить конкретное значение для user_id: 1
, что я должен пройти дополнительно?Или как мне его реструктурировать?