Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 猫鼬:跨多个领域的唯一性_Node.js_Mongodb_Validation_Express_Mongoose - Fatal编程技术网

Node.js 猫鼬:跨多个领域的唯一性

Node.js 猫鼬:跨多个领域的唯一性,node.js,mongodb,validation,express,mongoose,Node.js,Mongodb,Validation,Express,Mongoose,以下是我的模式: var user = new Schema({ // other fields... email_1: String, email_2: String }); 是否有办法确保电子邮件1和电子邮件2的唯一性?也就是说,如果某个电子邮件被保存为某个用户的电子邮件1,则其他任何人都无法将其保存为电子邮件1或电子邮件2 我尝试了复合索引,但它只检查电子邮件对,我需要所有电子邮件都是唯一的。使用数组作为索引的事实,并将电子邮件存储为“有序对”[email1,email2]

以下是我的模式:

var user = new Schema({
  // other fields...

  email_1: String,
  email_2: String
});
是否有办法确保电子邮件1和电子邮件2的唯一性?也就是说,如果某个电子邮件被保存为某个用户的电子邮件1,则其他任何人都无法将其保存为电子邮件1或电子邮件2


我尝试了复合索引,但它只检查电子邮件对,我需要所有电子邮件都是唯一的。

使用数组作为索引的事实,并将电子邮件存储为“有序对”
[email1,email2]

> db.emails.ensureIndex({ "emails" : 1 }, { "unique" : true })
> db.emails.insert({ "emails" : ["me@wdb.com", "metoo@wdb.com"] })
> db.emails.insert({ "emails" : ["you@eagor.com", "me@wdb.com"] }) // MongoDB says NO!
> db.emails.insert({ "emails" : ["metoo@wdb.com", "myself@wdb.com"] }) // MongoDB says NO

非常感谢。在新数据库上运行良好,但在旧数据库上不起作用。我是否需要以某种方式重新确保/重置/删除数据库上的索引?