Из system.profile коллекции У меня есть документы, как это:Как получить только определенные поля из документа Mongodb?
{
"op" : "command",
"ns" : "..",
"command" : {
"count" : "..",
"query" : {
"$and" : [
...
]
}
},
"responseLength" : 48,
"millis" : 18,
}
Некоторые запросы не имеют поле команды вместо них есть поле «запрос». Я хочу проверить, существует ли поле команды. Если это так, добавьте это к моему объекту Stringbuilder, если не добавьте «запрос».
UPDATE:
Я пытался использовать Проекция как предложено Давиде по-прежнему, но я не найти способ проверки, если запрос существует, если он затем добавляет, что.
DBCollection collection = mongoTemplate.getCollection("system.profile");
DBObject query = new BasicDBObject("command", new BasicDBObject("$exists",true));
BasicDBObject fields = new BasicDBObject("command",1).append("millis", 1).append("ts", 1);
DBCursor cursor = collection.find(query, fields);
while(cursor.hasNext()) {
sb.append(cursor.next());
sb.append(System.getProperty("line.separator"));
}
return sb;
}
Ответ на правильность ответа на вопрос! –
Я попытался использовать Projection, как вы предлагали. Вы можете увидеть мое обновление по моему вопросу? Единственная проблема заключается в том, что я могу получить определенные поля, но я не понимаю, как заставить его работать для проверки наличия поля запроса. Что бы я ни писал, работает, если существует «команда». Если «запрос» существует, тогда не будет поля «команда». – Rthp