Основная операция - преобразовать значение из строки в число, которое невозможно обработать в aggregate pipeline operation
в настоящее время. mapReduce - альтернатива, как показано ниже.
db.c.mapReduce(function() {
emit( this.groupId, {score: Number(this.value), count: 1} );
}, function(key, values) {
var score = 0, count = 0;
for (var i = 0; i < values.length; i++) {
score += values[i].score;
count += values[i].count;
}
return {score: score, count: count};
}, {finalize: function(key, value) {
return {score: value.score / value.count};
}, out: {inline: 1}});
Я не думаю, что это возможно, чтобы соответствовать именно то, что вам нужно. Как насчет чего-то вроде:
"Print": {
"prefix": ".print",
"body": [
"print(${TM_CURRENT_LINE/(.*)\\..+$/$1/})[110]"
],
"description": "Print"
}
Если я напишу a.print и нажму ENTER
, это будет выводом:
aprint(a)
Если я напишу «a» .print, это будет быть вывод:
"a"print("a")
Затем вы должны удалить первую часть. Это основано на том, что я знаю, что некоторые поиски не привели к лучшему решению.
Это будет иметь некоторые проблемы, если вы будете использовать его в строке, состоящей из других операторов, потому что это займет TM_CURRENT_LINE
. См. Переменные .