Поиск агрегации в mongoDB с использованием Groovy в Jmeter - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть две коллекции в MongoDB.Я использую сэмплер JSR223 в Jmeter для выполнения операции поиска на mongoDB.
Имя базы данных: DB
Имена коллекций: c_1, c_2

Groovy-кодвыполнить поиск агрегации в MongoDB.

c_1.insert(new BasicDBObject(["id" : 1, "name" : "abc", "lastName" : "kumar",  "companyId": 10]))  

c_2.insert(new BasicDBObject(["id" : 10, "companyName" : "Microsoft", "numEmployee" : 100 ]))  

// build the $lookup operations  
DBObject lookupFields = new BasicDBObject("from", "c_2");  
lookupFields.put("localField", "companyId");  
lookupFields.put("foreignField", "id");  
lookupFields.put("as", "companydoc");   
DBObject lookup = new BasicDBObject("$lookup", lookupFields);  

// build the $project operations  
DBObject projectFields = new BasicDBObject("name", 1);  
projectFields.put("lastName", 1);  
projectFields.put("companyId", 1);  
projectFields.put("companyName", "$c_2.companyName");         
DBObject project = new BasicDBObject("$project", projectFields);  
List<DBObject> pipeline = Arrays.asList(lookup, project);  
AggregationOutput output = c_1.aggregate(pipeline);  
for (DBObject result : output.results())    
{  
    System.out.println(result);  
}   

Ошибка: Ответное сообщение: javax.script.ScriptException: groovy.lang.MissingPropertyException: Нет такого свойства: поиск для класса: Script79

1 Ответ

0 голосов
/ 11 декабря 2018

Ваш синтаксис не совместим с Groovy GStrings , согласно документации :

Если вам нужно экранировать $ или $ {} заполнителей вСтрока GString, чтобы они выглядели как есть без интерполяции, вам просто нужно использовать символ \ backslash для экранирования знака доллара:

assert '${name}' == "\${name}"

, поэтому либо используйте одинарные кавычки, например:

DBObject lookup = new BasicDBObject('$lookup', lookupFields);  

или экранированный знак доллара с обратной косой чертой:

DBObject lookup = new BasicDBObject("\$lookup", lookupFields);  

тот же подход для $project, $c_2.companyName и т. Д.

Дополнительная информация: Как выполнитьИспытание нагрузки MongoDB с JMeter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...