我有Conversation
猫鼬模型,其中members
字段:
const Conversation = new Schema({
...
members: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
...
});
我想删除1个或更少成员的对话。 目前我这样做:
Conversation.remove({
$or: [
{ members: { $size: 1 } },
{ members: { $size: 0 } }
]
});
我想知道mongoose / mongodb是否支持以下内容(无法正常工作):
Conversation.remove({
members: {
$size: { $lte: 1 }
}
});
由于
答案 0 :(得分:0)
来自$size
的{{3}}。
$ size不接受值范围。选择基于的文档 具有不同数量的元素的字段,创建一个计数器字段 在向字段添加元素时增加。
查询不能使用索引来查询查询的$ size部分 如果适用,查询的其他部分可以使用索引。
适应你的标志
const Conversation = new Schema({
...
members: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
nbMembers: {
type: Number,
select: false,
},
...
});
删除案例
Conversation.remove({
nbMembers: {
$lte: 1,
},
});
在_id
中添加members
时,请勿忘记在+1
MongoDB documentation
nbMembers