Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 在mongodb中,如何在创建复合索引后将其添加到表中_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 在mongodb中,如何在创建复合索引后将其添加到表中

Node.js 在mongodb中,如何在创建复合索引后将其添加到表中,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我已经创建了模型,并且插入了很少的文档,但当我现在添加索引时,索引不起作用。我试着用电脑清空桌子 db.orders.remove({}) 但索引仍然无法与我一起插入重复项。下面是我的猫鼬模型 var OrderSchema = new Schema({ client_order_id: { type: String, trim: true }, client_request_id: { type: String, trim: true },

我已经创建了模型,并且插入了很少的文档,但当我现在添加索引时,索引不起作用。我试着用电脑清空桌子

db.orders.remove({})
但索引仍然无法与我一起插入重复项。下面是我的猫鼬模型

var OrderSchema = new Schema({
  client_order_id: {
    type: String,
    trim: true
  },
  client_request_id: {
    type: String,
    trim: true
  },
  created: {
    type : Date, 
    default: Date.now 
  },
  updated: {
    type : Date, 
    default: Date.now 
  },
});

OrderSchema.index({client_order_id:1, client_request_id:1}, { unique: true });
当我在终端中检查mongodb的日志时,我可以看到错误,尽管它仍然接受重复的日志

2014-12-28T02:46:56.819+0530 [conn9]     building index in background
2014-12-28T02:46:56.820+0530 [conn9] background addExistingToIndex exception E11000 duplicate key error index: mean-dev.orders.$client_order_id_1  dup key: { : "141216629793885" }
2014-12-28T02:46:56.820+0530 [conn9] index build failed. spec: { v: 1, unique: true, key: { client_order_id: 1 }, name: "client_order_id_1", ns: "mean-dev.orders", background: true, safe: null } error: 11000 E11000 duplicate key error index: mean-dev.orders.$client_order_id_1  dup key: { : "141216629793885" }
注:

在我换了工作之后,它起了作用

OrderSchema.index({client_order_id:1, client_request_id:1}, { unique: true, dropDups: true });

并删除表,重新启动mongodb服务器

确保您正在从shell中的正确数据库中删除
orders
集合。首先运行
使用mean dev
。@JohnnyHK是的,那是我的错误。是否每次更改索引时都必须重新启动表;但是,在添加唯一索引之前,您确实需要消除任何重复项(或者在创建索引时使用
dropDups
选项)。@raju:如果您经常更改索引,则您的数据模型很可能有问题。索引通常不会经常更改–最多与数据模型一样频繁,这往往发生在开发过程的早期。小心——MongoDBs动态模式的缺点是,您需要对模型严格遵守规则——听起来很奇怪。