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

Mongodb 在文档中,两个键值不应具有相同的值,mongodb,Mongodb,我正在设计一个数据库来存储用户的聊天历史记录,其中发送者和接收者不能是同一个人 {sender:1,receiver:2}但是如果用户插入一个文档{sender:1,receiver:1},那么它应该给出一个错误。如何在javascript控制台上实现这一点。请指导。我正在mongodb中设计数据库。您可以设置一个检查点,msgHistory{sender:1,receiver:1}是对象,如果(msgHistory.sender==msgHistory.receiver){//Do nothi

我正在设计一个数据库来存储用户的聊天历史记录,其中发送者和接收者不能是同一个人
{sender:1,receiver:2}
但是如果用户插入一个文档
{sender:1,receiver:1}
,那么它应该给出一个错误。如何在javascript控制台上实现这一点。请指导。我正在mongodb中设计数据库。

您可以设置一个检查点,
msgHistory{sender:1,receiver:1}
是对象,如果(msgHistory.sender==msgHistory.receiver){//Do nothing}其他{//Do something},检查发送和接收是否相等。。。如果您要求我为发送者和接收者分配布尔值,这会提高效率。

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

函数发送消息(消息){
if(message.sender==message.receiver){
抛出“无法向自己发送消息”;
}否则{
db.messages.save(消息);
}
}

您还可以考虑将<代码> [发送者,接收者] < /代码>关系编码为消息对象中的一个二元素列表,其中Orror定义哪个用户是发送者,哪些是接收者。这将允许您轻松搜索涉及给定用户的所有消息

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