2016-04-14 32 views
0

我正在嘗試使用mongodb實現mongo中兩個用戶之間的簡單消息系統。我希望能夠接收兩個用戶user0和user1,並在集合中搜索他們的條目。如果這兩個用戶的條目不存在,我想創建它,然後添加發送到其消息字段的消息。如果它確實存在,我只是想將消息推送到消息字段。如何形成與mongodb中的許多元素的無序密鑰

我不太確定實現此目的的最佳方法。

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,但這些看起來不是這樣做的好方法。這完全是錯誤的方法?

感謝。

回答

0

我認爲這可以通過設計來解決。 讓我們說,我們收集聊天記錄文件;

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

然後消息將被存儲在聊天內的消息對象中。

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

這種方法可以讓你避免溢出的文件大小限制,你可以開始每週新的聊天入口,日等..

有一個有趣的!