如何在mongodb

时间:2016-04-14 15:34:59

标签: mongodb

我正在尝试使用mongodb在mongo中的两个用户之间实现一个简单的消息传递系统。我希望能够接受两个用户user0和user1,并在集合中搜索他们的条目。如果这两个用户的条目不存在,我想创建它,然后添加发送到其消息字段的消息。如果确实存在,我只想将消息推送到消息字段。

我不确定实现此目的的最佳方法。

db.privateChat.update(
    {between:{$all:['user0', 'user1']}}, 
    {$push:{message:'text'}}, {upsert:true}
)

和其他类似的入门计划但它们不起作用。他们产生错误:

"Cannot create base during insert of update. Caused by :ConflictingUpdateOperators Cannot update 'between' and 'between' at the same time"

我可以想到其他方法来生成对称密钥(用户的顺序对于搜索而言无关紧要),例如将哈希添加到一起或查询是否为messenger0或messenger1是user0或user1,但这些似乎不是很好的方法。这完全是错误的做法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为这可以通过设计解决。 假设我们在收集聊天中有文档;

chat{
_id,
between[arrayOfIds],
startTime,
events[
{message:{
      fromUserId,
      timeStamp,
      data}
}}
]}
}

然后消息将存储在聊天内的消息对象中。

应用会知道聊天_id,因此当您有超过2个用户进行群聊时不会出现问题。

这种方法可以防止文档大小限制,因为您可以每周,每天等开始新的聊天记录...

玩得开心!