#mongodb #mongoose #mongoose-schema
#mongodb #мангуст #мангуст-схема
Вопрос:
Я большой специалист в mongoose, я реализую концепцию комментариев. Фактически, я создаю комментарий к схеме, в котором я идентифицирую разные поля, как показано:
import mongoose from 'mongoose';
/* eslint-disable-next-line */
import db from './db';
// Define Schema method= mongoose;
const { Schema } = mongoose;
const CommentSchema = new Schema({
id: {
type: String,
required: true,
unique: true,
},
author_id: {
type: String,
required: true,
},
content: {
type: String,
},
creation_date: {
type: Date,
default: Date.now,
},
interesting_comment: [String],
updated_content_list: [{ previous_date: Date, previous_content: String }],
children: [String],
});
export default mongoose.model('Comment', CommentSchema);
Примечание: children — это ответ на родительский комментарий, вот пример:
{
"_id" : ObjectId("60217951f57f24079f885d66"),
"interesting_comment" : [
"6ff10e9"
],
"children" : [
"c13e5487-07ba-4bc9-996e-ef1c8f826b32"
],
"updated_content_list" : [ ],
"id" : "6f169ee4-d22d-49a2-9f71-5dacadecf6bb",
"author_id" : "b08a3310-b3f4-4521-9b1a-2d5667a3ea1d",
"content" : "Hello wijdene",
"creation_date" : ISODate("2021-02-08T17:48:01.026Z"),
"__v" : 4
}
{
"_id" : ObjectId("602179d1f57f24079f885d68"),
"interesting_comment" : [ ],
"children" : [ ],
"updated_content_list" : [ ],
"id" : "c13e5487-07ba-4bc9-996e-ef1c8f826b32",
"author_id" : "111",
"content" : "hi nesrine",
"creation_date" : ISODate("2021-02-08T17:50:09.075Z"),
"__v" : 0
}
Я реализую эту функцию:
async function ListComment() {
const comments = await Comment.find();
return comments;
}
Я хочу получить всех детей по их родительскому комментарию, я трачу часы и не понимаю, какая помощь, пожалуйста
Комментарии:
1. Вы пробовали использовать $graphLookup ?
2. Спасибо за ваш ответ, я попробую с этим справиться, я понятия не имею об этом
3. асинхронная функция ListComment() {const comments = await Comment.aggregate([{$unwind:{path:»$children»,preserveNullAndEmptyArrays: true}},{$lookup:{from:»комментарии»,localField:»дочерние элементы»,foreignField:»идентификатор»,как: «дочерние элементы»}}]); возвращать комментарии; } Я пытаюсь таким образом, но я хочу удалить дочерний элемент
Ответ №1:
Я пытаюсь исправить эту проблему с помощью поиска:
async function ListComment() {
const comments = await Comment.aggregate([{$unwind:{path:"$children",preserveNullAndEmptyArrays: true}},{$lookup:{from:"comments",localField:"children",foreignField:"id",as:"children"}}]);
return comments;
}
Но даже у ребенка это проявляется таким образом. Фактически, я добавляю preserveNullAndEmptyArrays: true для сохранения родительского элемента, который не содержит дочернего элемента. Но то, что я получаю, — это новая комбинация родитель без детей дети. Я хочу удалить детей, есть какие-нибудь идеи