Muh*_*sin 1 mongoose mongodb node.js express
我有一个名为ReferralHistory的架构。它包含一组用户和一组推荐用户。
转介历史
var mongoose = require('mongoose');
var refferalHistorySchema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
unique: true
},
referrals: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}],
});
var ReferralHistoryModel = mongoose.model('ReferralHistory', refferalHistorySchema);
module.exports = {
referralHistory: ReferralHistoryModel
}
Run Code Online (Sandbox Code Playgroud)
我需要从集合 ReferralHistory [在这里我只知道被推荐用户的 id] 中的推荐数组中删除特定用户。我怎样才能做到这一点?
编辑
我试过
db.referralhistories.update({ "u_referrals": "593281ef966d7f0eeb94db3d" }, { "$pull": { "u_referrals": "593281ef966d7f0eeb94db3d" } });
Run Code Online (Sandbox Code Playgroud)
但是文档没有更新。
您将$pull运算符与.update(). 所以假设referredId你知道的价值
ReferralHistoryModel.update(
{ "referrals": referredId },
{ "$pull": { "referrals": referredId } },
{ "multi": true },
function(err,status) {
}
)
Run Code Online (Sandbox Code Playgroud)
请注意这{ "multi": true }意味着更新可以应用于集合中的多个匹配文档。如果您真的只想匹配和更新一个文档,那么您就不要包含该选项,因为默认情况下仅更新第一个匹配项。
如果您想更具体并且还需要匹配“用户”,那么您可以执行以下操作:
ReferralHistoryModel.update(
{ "user": userId, "referrals": referredId },
{ "$pull": { "referrals": referredId } },
{ "multi": true },
function(err,status) {
}
)
Run Code Online (Sandbox Code Playgroud)
然后匹配需要存在两个值,而不是与您提供的任何 ReferralhistoryModel文档匹配referredId。
| 归档时间: |
|
| 查看次数: |
4401 次 |
| 最近记录: |