在文档中,两个键值不应具有相同的值

时间:2015-01-31 14:15:39

标签: mongodb

我正在设计一个数据库,用于存储用户的聊天记录,其中发件人和收件人可以是同一个人。所以文件应该是这样的 {sender :1 ,receiver:2}但如果用户插入文档{sender :1,receiver :1},那么它应该给出错误。如何在javascript console.please guideline.i设计数据库mongodb。

2 个答案:

答案 0 :(得分:2)

在保存每封邮件之前,应在应用程序代码中检查此类约束。在shell中,您可以使用这样的函数来检查消息是否有效,然后再将其保存到数据库中。

function sendMessage(message) {
  if(message.sender == message.receiver) {
    throw "Cannot send message to self";
  } else {
    db.messages.save(message);
  }
}

您还可以考虑将[sender, receiver]关系编码为消息对象中的双元素列表,其中order定义哪个用户是发件人,哪个用户是接收者。这将允许您轻松搜索涉及给定用户的所有消息。

例如,如果Message对象的格式为{ senderReceiver: [1, 2] }, 然后,您可以使用查询db.messages.find({senderReceiver: 2})找到涉及用户2的所有消息。

答案 1 :(得分:0)

你可以设置一个检查点,msgHistory{sender:1,receiver:1}是对象,检查发送和接收是否相等if(msgHistory.sender == msgHistory.receiver){ // Do nothing } else {//Do something } ...如果你问我sender和{{1} }应该用布尔值赋值,这样才能有效。