在我的项目中,我想增加我的"数字"仅当我的$ addToSet成功时才输入字段。有主题,每个主题都有用户。当用户加入主题时,我会在"用户"中添加他的ID。数组和我增加主题中的用户数。目前,我的解决方案增加了字段编号,即使用户已经在用户"数组"。
<?php dynamic_sidebar('ylgsubscriber');?>
我在Google上尝试了很多东西,但我总是出错。我该怎么做呢?
答案 0 :(得分:3)
您可以对此过程使用两个写入操作,因为在单个原子更新操作中无法实现。
如果查询满足用户不存在的给定条件,则第一次更新操作会递增计数器,然后下一次更新操作会使用 $addToSet
将用户添加到阵列:< / p>
var query = {
_id: roomId,
users: {"$ne": this.userId}
};
Topics.update(query, { $inc: { number: 1 } });
Topics.update(roomId, { $addToSet: { users: this.userId });
这可能会因为两次数据库调用而效率稍低,但如果这是一个可能会影响您的问题
应用程序性能然后您可以使用Topics.rawCollection()
为Mongo的 findAndModify()
编写自己的流星包装器。