如何在mongodb中形成包含多个元素的无序键

如何在mongodb中形成包含多个元素的无序键,mongodb,Mongodb,我试图使用mongodb在mongo中的两个用户之间实现一个简单的消息传递系统。我希望能够获取两个用户,user0和user1,并在集合中搜索它们的条目。如果这两个用户的条目不存在,我想创建它,然后将发送的消息添加到其消息字段中。如果它确实存在,我只想将消息推送到消息字段 我真的不确定实现这一点的最佳方式 db.privateChat.update( {between:{$all:['user0', 'user1']}}, {$push:{message:'text'}}, {

我试图使用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"
我可以想出其他方法来生成一个对称密钥(用户的顺序对于搜索目的来说并不重要),比如一起添加散列,或者一个检查Messenger 0或Messenger 1是否为user0或user1的查询,但这似乎不是很好的方法。这完全是错误的做法吗


谢谢。

我认为这可以通过设计来解决。 比如说,我们在收集聊天中有文档

chat{
_id,
between[arrayOfIds],
startTime,
events[
{message:{
      fromUserId,
      timeStamp,
      data}
}}
]}
}
然后消息将存储在聊天室中的消息对象中

应用程序将知道聊天id,因此当您在两个以上的用户之间进行群组聊天时,不会出现任何问题

这种方法将允许您防止文档大小限制溢出,因为您可以每周、每天等开始新的聊天条目

玩得开心