只有当一个新元素被添加到一个集合中时,才使用$inc
$inc only if a new element was added to a set
我有一个观察器,它等待对象更改,然后将该作业添加到队列中。每当有东西添加到集合中时,就会触发此项。
this.upsert({
count: { $lt: this.config.limit }
}, {
$setOnInsert: {
queue: [],
count: 0
},
$addToSet: {
queue: doc._id
},
$inc: { count: 1 } // herein lie the problem.
});
然而,我面临的问题是,count
将在没有任何技术上的添加到集合的情况下递增。
是否有一种方法可以仅在单个查询中将元素添加到集合时进行增量?
您可以通过用另一个条件项门控更新来检查doc._id
是否还不在queue
数组中。
this.upsert({
count: { $lt: this.config.limit },
queue: { $ne: doc._id }
}, {
$setOnInsert: {
queue: [],
count: 0
},
$push: { // Can use $push instead of $addToSet now
queue: doc._id
},
$inc: { count: 1 }
});
它基本上是一个自己动手做的$addToSet
,给你更多的控制。
相关文章:
- 包含一个集合的1到3个成员但其中一个成员不能单独存在的正则表达式
- 如何将两个集合转换为一个集合
- Meteor:访问另一个集合,每个块中有一个id
- Backbone.js视图可以有一个模型和一个集合吗
- 另一个集合视图中的集合视图
- Mongo-Aggregate:如何与另一个集合中的字段进行比较
- Meteor - 将 mongodb 查询分配给变量并将其插入到另一个集合
- 基于 MongoDB 中另一个集合中的数据查询一个集合中的数据
- 流星 - 将数据从一个集合移动到另一个集合
- 一个集合中的不同模型类型 主干
- 如何在插入时引用另一个集合
- 主干:将模型从一个集合添加到另一个集合
- 用于将树分支从集合移动到另一个集合的Firebase API
- WinstonMongoDB:如何将日志管道传输到多个集合,而不是全部传输到一个集合
- 如何仅从一个集合中删除主干模型
- MongoDB:从一个集合中提取多个随机文档
- 在Meteor(MongoDB)中,按另一个集合中的值搜索一个集合
- MongoDB-插入到两个集合中,一个集合引用另一个作为子文档
- Meteor从数组返回值,以便在另一个集合中使用它
- 只有当一个新元素被添加到一个集合中时,才使用$inc