如何在mongodb中形成包含多个元素的无序键
我试图使用mongodb在mongo中的两个用户之间实现一个简单的消息传递系统。我希望能够获取两个用户,user0和user1,并在集合中搜索它们的条目。如果这两个用户的条目不存在,我想创建它,然后将发送的消息添加到其消息字段中。如果它确实存在,我只想将消息推送到消息字段 我真的不确定实现这一点的最佳方式如何在mongodb中形成包含多个元素的无序键,mongodb,Mongodb,我试图使用mongodb在mongo中的两个用户之间实现一个简单的消息传递系统。我希望能够获取两个用户,user0和user1,并在集合中搜索它们的条目。如果这两个用户的条目不存在,我想创建它,然后将发送的消息添加到其消息字段中。如果它确实存在,我只想将消息推送到消息字段 我真的不确定实现这一点的最佳方式 db.privateChat.update( {between:{$all:['user0', 'user1']}}, {$push:{message:'text'}}, {
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,因此当您在两个以上的用户之间进行群组聊天时,不会出现任何问题
这种方法将允许您防止文档大小限制溢出,因为您可以每周、每天等开始新的聊天条目
玩得开心