如何查找和更新猫鼬模型?
How to find and update a mongoose model?
我有一个模型 userDatas,它包含一个用户数据列表。
[{
"_id" : ObjectId("5bb6730721f28a295436b36f"),
"userId" : "5bb6730721f28a295436b36e",
"reputationNumber" : 0,
"questions" : [],
"answers" : []
},
{
"_id" : ObjectId("5bb6738c21f28a295436b371"),
"userId" : "5bb6738c21f28a295436b370",
"reputationNumber" : 0,
"questions" : [],
"answers" : []
}]
我想按 userId 过滤并将“5bb7d72af050ca0910282ff4”字符串添加到问题数组。如何实现?
//Userdatas.find
查询看起来像
Userdatas.findOne({where: {userId: "5bb7d72af050ca0910282ff4"}}, function (err, data) {
if (!err && data) {
var questionsArr = [];
if (data.questions) {
questionsArr = data.questions;
}
questionsArr.push('5bb7d72af050ca0910282ff4');
data.updateAttributes({questions: questionsArr}, function(err, updateData) {
cb (err, updateData);
});
} else {
cb (err, {});
}
});
不幸的是,您需要 2 个查询才能执行此操作。首先,获取 userId 与所需 userId 匹配的文档,并将字符串推送到问题数组并更新文档。
编辑:
第一个 findOne 查询获取 userId 与我们的用户匹配的文档。 updateAttributes 查询在获取的文档上执行,因此它会更新正确的文档。
由于您使用的是猫鼬,因此您可以使用 findOneAndUpdate and addToSet 来实现此目的:
Userdatas.findOneAndUpdate(
{userId: "5bb7d72af050ca0910282ff4"},
{$addToSet: {questions: '5bb7d72af050ca0910282ff4'}},
function (err, result) {
...
}
)
我有一个模型 userDatas,它包含一个用户数据列表。
[{
"_id" : ObjectId("5bb6730721f28a295436b36f"),
"userId" : "5bb6730721f28a295436b36e",
"reputationNumber" : 0,
"questions" : [],
"answers" : []
},
{
"_id" : ObjectId("5bb6738c21f28a295436b371"),
"userId" : "5bb6738c21f28a295436b370",
"reputationNumber" : 0,
"questions" : [],
"answers" : []
}]
我想按 userId 过滤并将“5bb7d72af050ca0910282ff4”字符串添加到问题数组。如何实现?
//Userdatas.find
查询看起来像
Userdatas.findOne({where: {userId: "5bb7d72af050ca0910282ff4"}}, function (err, data) {
if (!err && data) {
var questionsArr = [];
if (data.questions) {
questionsArr = data.questions;
}
questionsArr.push('5bb7d72af050ca0910282ff4');
data.updateAttributes({questions: questionsArr}, function(err, updateData) {
cb (err, updateData);
});
} else {
cb (err, {});
}
});
不幸的是,您需要 2 个查询才能执行此操作。首先,获取 userId 与所需 userId 匹配的文档,并将字符串推送到问题数组并更新文档。
编辑: 第一个 findOne 查询获取 userId 与我们的用户匹配的文档。 updateAttributes 查询在获取的文档上执行,因此它会更新正确的文档。
由于您使用的是猫鼬,因此您可以使用 findOneAndUpdate and addToSet 来实现此目的:
Userdatas.findOneAndUpdate(
{userId: "5bb7d72af050ca0910282ff4"},
{$addToSet: {questions: '5bb7d72af050ca0910282ff4'}},
function (err, result) {
...
}
)