问题是:
我有一组照片架构和喜欢架构,而且在照片中有一个类似于ObjectIds的数组,名为likeArray,用于填充喜欢收集的数据。
但是当我从likes集合中删除like时,likeArray中的ObjectId仍然存在。
我试图在likeArray中找到like._id的索引并使用likeArray.splice(index,1)但是无法工作。
有人知道解决方案吗?
这是照片架构:
var Photo = mongoose.model('Photo', new mongoose.Schema({
photo_url: String,
photo_description: String,
user:{
id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'user'
},
username: String,
profile_photo: String
},
comments: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'comment'
}
],
likes: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'like'
}
],
created_at: {type: Date, default: Date.now}
}));
这里是Like架构:
var Like = mongoose.model('Like', new mongoose.Schema({
user_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'user'
},
photo_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'photo'
},
created_at: {type: Date, default: Date.now}
}));
答案 0 :(得分:1)
您可以使用$pull
运算符代替拼接。以下是它在mongo shell中的外观。
db.likes.remove({_id: like_oid});
db.photos.update({likes: like_oid}, {$pull: {likes: like_oid}}, { multi: true });