如何使用 mongodb 向嵌套文档添加修饰符
Posted
技术标签:
【中文标题】如何使用 mongodb 向嵌套文档添加修饰符【英文标题】:How to add a modifier to a nested document with mongodb 【发布时间】:2021-07-19 11:42:01 【问题描述】:我有这个模型
-
这是模型
const PostSchema = nongoose.Schema(
body:
type: String,
trim: true,
maxlength: 250,
required: true,
,
comments:
required: true,
type: [
creatorId:
type: String,
required: true,
,
creator:
type: String,
required: true,
,
timestamp: Number,
body:
type: String,
required: true,
trim: true,
,
likes:
type: [String],
required: true,
,
replies:
require: true,
type: [
creatorId: String,
creatorName: String,
timestamp: Number,
body:
type: String,
,
,
],
,
,
],
,
,
timestamps: true,
);
我想在每次收到所有帖子时将 isReady= true
附加到每个 cmets。
基本上我不想将它添加到我的数据库中。
-
这是我的控制器
module.exports.readPost = async (req, res) =>
await PostModel.find((err, doc) =>
!err ? res.send(doc) : console.log("Get Data Error" + err);
).sort( createdAt: -1 );
;
我想在每次收到所有帖子时将 isReady= true
附加到每个 cmets。
基本上我不想将它添加到我的数据库中。
【问题讨论】:
不将其添加到您的收藏中,您的意思是不将其保存到数据库中吗? 是的,我想从服务器上做 【参考方案1】:使用Mongoose Lean将doc转换为javascript对象,然后使用Array.map
修改docs
中的所有items
module.exports.readPost = async (req, res) =>
try
const doc = await PostModel.find().lean();
const sortedDoc = doc.sort( createdAt: -1 );
const modifiedDocs = sortedDoc.map((item) =>
item.comments.isReady = true;
return item;
);
res.send(modifiedDocs);
catch (error)
console.log('Get Data Error' + err);
;
【讨论】:
有没有办法用 mongo db 查询修饰符添加它 ¶ 你的意思是喜欢使用Mongoose吗?这可能会更改数据库中的文档? @DimerBwimba 我的意思是像 db.collection.find(db.collection.find( <query> )._addSpecial( <option> )
的吗? @DimerBwimba
我想你可能是想使用Mongoose Lean以上是关于如何使用 mongodb 向嵌套文档添加修饰符的主要内容,如果未能解决你的问题,请参考以下文章