我想通过 Java 驱动程序在 MongoDB 中的 Age
和 Name
上创建复合索引,这是我的语法:
coll.ensureIndex(new BasicDBObject("Age", 1),new BasicDBObject("Name", -1));
List <DBObject> list = coll.getIndexInfo();
for (DBObject o : list) {
System.out.println(o);
}
但它只创建 1 个索引而不是复合索引并给我结果:
{ "v" : 1 , "key" : { "_id" : 1} ,"ns" :"EmployeeData.EmpPersonalData", "name":"_id_"}
{ "v" : 1 , "key" : { "Age" : 1} , "ns" : "EmployeeData.EmpPersonalData" , "name" : "Age_1" , "Name" : -1}
那么如何通过java驱动创建集合的复合索引呢?
最佳答案
如果您查看您的代码,您实际上已经使用两个参数调用了 ensureIndex
。你的第一个参数是键,你的第二个参数变成了一些额外的字段:Name: -1
。
您希望在第一个参数中传递的是这个对象 {"Age":1, "Name":-1}
。你实际传递的是 {"Age":1}, {"Name":-1}
。
所以你想做这样的事情:
BasicDBObject obj = new BasicDBObject();
obj.put("Age", 1);
obj.put("Name", -1);
coll.ensureIndex(obj);
请注意,索引将使用默认名称创建。要提供特定名称,请执行以下操作:
coll.ensureIndex(obj, "MyName");
关于java - 如何通过Java驱动在MongoDB中创建复合索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11488669/