저는 처음으로 MongoDB
입니다. 기본적으로 mongodb
의 컬렉션에는 _id
필드의 인덱스가 있습니다. Java를 사용하여 2 개의 다른 필드에 인덱스를 만들어야합니다.Java를 사용하여 둘 이상의 필드가있는 mongodb에서 색인을 생성하십시오.
DBObject indexOptions = new BasicDBObject();
indexOptions.put(field_1, 1);
indexOptions.put(field_2, -1);
collection.createIndex(indexOptions)
내가
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "schema.collection_name"
},
{
"v" : 1,
"key" : {
"field_1" : 1,
"field_2" : -1
},
"name" : "field_1_1_field_2_-1",
"ns" : "schema.collection_name"
}
]
나는 위 맞는지 확실하지 않다() MongoDB를에 db.collection_name.getIndexes를 사용하여 해당 쿼리합니다. 누군가 확인해 주시겠습니까? 올바르지 않으면 어떻게 수정해야합니까? 위와 같이
DBObject subscriberIdObj = new BasicDBObject(field3, value3);
DBObject subscriberIdIsNullObj = new BasicDBObject(field3, null);
BasicDBList firstOrValues = new BasicDBList();
firstOrValues.add(subscriberIdObj);
firstOrValues.add(subscriberIdIsNullObj);
DBObject firstOr = new BasicDBObject("$or", firstOrValues);
DBObject batchIdObj = new BasicDBObject(field1, value1);
DBObject fileNameObj = new BasicDBObject(field2, value2);
BasicDBList secondOrValues = new BasicDBList();
secondOrValues.add(batchIdObj);
secondOrValues.add(fileNameObj);
DBObject secondOr = new BasicDBObject("$or", secondOrValues);
BasicDBList andValues = new BasicDBList();
andValues.add(firstOr);
andValues.add(secondOr);
DBObject query = new BasicDBObject("$and", andValues);
DBCursor cursor = mongoDatastore.getDB().getCollection(collection_name).find(query);
지금, 빠른 검색을 위해 내가 필드 1, FIELD2 및 FIELD3에 별도로 인덱스를 만들어야합니다
검색을 위해 내가 이런 일을하고, 위의에 추가? 또는 3 개의 모든 필드에 대한 복합 색인?
예. 당신이 한 일은 정확합니다. 두 필드가있는 복합 인덱스를 만들었습니다. – BatScream