Mongodb 根据数组字段$size和比较运算符删除文档
我有一个Mongodb 根据数组字段$size和比较运算符删除文档,mongodb,mongoose,Mongodb,Mongoose,我有一个对话猫鼬模型,带有成员字段: const Conversation = new Schema({ ... members: [{ type: Schema.Types.ObjectId, ref: 'User' }] ... }); 我想删除与1个或更少成员的对话。 目前我是这样做的: Conversation.remove({ $or: [ { members: { $size: 1 }
对话
猫鼬模型,带有成员
字段:
const Conversation = new Schema({
...
members: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
...
});
我想删除与1个或更少成员的对话。
目前我是这样做的:
Conversation.remove({
$or: [
{ members: { $size: 1 } },
{ members: { $size: 0 } }
]
});
我想知道mongoose/mongodb是否支持以下内容(不工作):
感谢$size
$size不接受值的范围。根据选择文档的步骤
具有不同元素数的字段,创建一个计数器字段
向字段添加元素时,可以增加值
查询不能对查询的$size部分使用索引,但
如果适用,查询的其他部分可以使用索引
调整您的shema
const Conversation = new Schema({
...
members: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
nbMembers: {
type: Number,
select: false,
},
...
});
删除案例
Conversation.remove({
nbMembers: {
$lte: 1,
},
});
当您在成员中添加\u id
时,不要忘记从$size
中添加+1
$size不接受值的范围。根据选择文档的步骤
具有不同元素数的字段,创建一个计数器字段
向字段添加元素时,可以增加值
查询不能对查询的$size部分使用索引,但
如果适用,查询的其他部分可以使用索引
调整您的shema
const Conversation = new Schema({
...
members: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
nbMembers: {
type: Number,
select: false,
},
...
});
删除案例
Conversation.remove({
nbMembers: {
$lte: 1,
},
});
在成员
中添加\u id
时,不要忘记在nbMembers上添加+1