簡體   English   中英

如何在mongodb中形成包含許多元素的無序鍵

[英]How to form an unordered key with many elements in 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,但這些似乎並不是很好的方法。 這是完全錯誤的方法嗎?

謝謝。

我認為可以通過設計解決。 假設我們在聊天室中有文檔;

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

然后消息將存儲在chat的消息對象中。

應用程序將知道chat _id,因此當您在2個以上的用戶之間進行群聊時不會有任何問題。

這種方法將使您避免溢出文檔大小限制,因為您可以每周,每天等開始新的聊天條目。

玩得開心!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM