我在名为 GOT 的 mongo db 集合中有以下几个 json 文档,并且我想对 GOT 集合中每个文档中的嵌套数组 metaTag 数组元素进行索引。
我尝试过以下方法:
BasicDBObject index = new BasicDBObject("season.questions.questionEntry.metaTags",1);
mongoColl.createIndex(index);
我不确定这个点符号是否是识别我的 json 文档中要索引的元素的正确方法? 如何判断索引是否创建成功?
编辑:添加我的查询:
// Query our collection documents metaTag elements for a matching string
// @SuppressWarnings("deprecation")
public void queryMetaTags(String query)
{
// Query to search all documents in current collection
List<String> continentList = Arrays.asList(new String[]{query});
DBObject matchFields = new
BasicDBObject("season.questions.questionEntry.metaTags",
new BasicDBObject("$in", continentList));
DBObject groupFields = new BasicDBObject( "_id", "$_id").append("questions",
new BasicDBObject("$push","$season.questions"));
//DBObject unwindshow = new BasicDBObject("$unwind","$show");
DBObject unwindsea = new BasicDBObject("$unwind", "$season");
DBObject unwindepi = new BasicDBObject("$unwind", "$season.questions");
DBObject match = new BasicDBObject("$match", matchFields);
DBObject group = new BasicDBObject("$group", groupFields);
@SuppressWarnings("deprecation")
AggregationOutput output =
mongoColl.aggregate(unwindsea,unwindepi,match,group);
String jsonString = null;
JSONObject jsonObject = null;
jsonResultsArray = null;
ourResultsArray = new ArrayList<JSONObject>();
// Loop for each document in our collection
for (DBObject result : output.results())
{
try
{
// Parse our results so we can add them to an ArrayList
jsonString = JSON.serialize(result);
jsonObject = new JSONObject(jsonString);
jsonResultsArray = jsonObject.getJSONArray("questions");
// Put each of our returned questionEntry elements into an ArrayList
for (int i = 0; i < jsonResultsArray.length(); i++)
{
System.out.println("jsonResultsArray element (" + i + "): " + jsonResultsArray.getJSONObject(i).toString());
ourResultsArray.add(jsonResultsArray.getJSONObject(i));
//System.out.println("ourResultsArray element (" + i + "): " + ourResultsArray.get(i).toString());
}
}
catch (JSONException e1)
{
e1.printStackTrace();
}
}
}
最佳答案
您可以使用以下 Java 代码在所需的键上建立索引:
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("dbName"); //set dbname name here
DBCollection collection = db.getCollection("collectionName");
collection.createIndex(new BasicDBObject("season.questions.questionEntry.metaTags",1));
Here是有关索引的详细信息。
关于java - 索引 mongodb json 文档 java 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31904993/