在 Mongoose 中设置或创建嵌入文档
Posted
技术标签:
【中文标题】在 Mongoose 中设置或创建嵌入文档【英文标题】:Set or create embedded document in Mongoose 【发布时间】:2014-07-13 05:03:03 【问题描述】:我有一个架构如下:
/**
* Answer Schema
*/
var AnswerSchema = new Schema(
answer: Number,
owner_id: Schema.Types.ObjectId
);
/**
* Poll Schema
*/
var PollSchema = new Schema(
question: type: String, required: true, trim: true ,
choices: [ type: String, required: true, trim: true ],
answers: [AnswerSchema]
);
如何为给定的 poll_id 和回答投票的人的 owner_id 设置答案?
【问题讨论】:
【参考方案1】:“设置或创建”这个术语有点打开了这一点。
基本上,您将使用$push
运算符和.update()
在数组中添加(创建)新项目,或者在@987654326 之后拥有当前文档后使用标准javascript 数组推送@。
但考虑到您可能想要“更新”给定所有者的现有答案,那么这可能是一个两步操作。如果没有,那么您只需要使用$push
进行“更新”。
PollSchema.update(
"_id": poll_id, "answers.owner_id": owner_id
"$set": "answers.answer": value ,
function(err,numAffected)
if (err)
throw err; // or whatever handling
// If this didn't modify anything then $push a document
if ( numAffected != 0 )
PollSchema.update(
"_id": poll_id ,
"$push":
"answers":
"owner_id": owner_id,
"answer": value
,
function(err, numAffected)
// more things in here
);
);
或者,如果您不关心每个“所有者”有多个答案,那么只需使用 $push
更新即可。
【讨论】:
以上是关于在 Mongoose 中设置或创建嵌入文档的主要内容,如果未能解决你的问题,请参考以下文章
在不使用 X-Windows 的情况下在 Linux 中设置或读取 Caps Lock 状态