Ошибка при переносе запроса агрегации MongoDB на сценарий bash - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь создать сценарий bash, который находит максимальное значение в следующей коллекции.

{ "_id" : ObjectId("5eaf83d1f803806404796611"), "livres" : "poeme", "ts" : ISODate("2020-05-04T02:54:09.668Z"), "val" : { "pages" : 30 } }
{ "_id" : ObjectId("5eaf83eff803806404796612"), "livres" : "poeme", "ts" : ISODate("2020-05-04T02:54:39.670Z"), "val" : { "pages" : 50 } }
{ "_id" : ObjectId("5eaf840df803806404796613"), "livres" : "histoire", "ts" : ISODate("2020-05-04T02:55:09.673Z"), "val" : { "pages" : 70 } }
{ "_id" : ObjectId("5eaf842bf803806404796614"), "livres" : "poeme", "ts" : ISODate("2020-05-04T02:55:39.675Z"), "val" : { "pages" : 0 } }
{ "_id" : ObjectId("5eaf8449f803806404796615"), "livres" : "histoire", "ts" : ISODate("2020-05-04T02:56:09.673Z"), "val" : { "pages" : 10 } }
{ "_id" : ObjectId("5eaf8467f803806404796616"), "livres" : "poeme", "ts" : ISODate("2020-05-04T02:56:39.675Z"), "val" : { "pages" : 50 } }
{ "_id" : ObjectId("5eaf8485f803806404796617"), "livres" : "poeme", "ts" : ISODate("2020-05-04T02:57:09.675Z"), "val" : { "pages" : 20 } }

Следующий запрос прекрасно работает в пн go cli:

db.livres_data.aggregate([{"$match": {"livres": "poeme"}},{"$group": {"_id": null,"MA": {"$max": "$val"}}}])

возвращает:

  { "_id" : null, "MA" : { "pages" : 50 } }

Когда я перенес этот запрос в скрипт bash, как показано ниже:

\#!/bin/bash

mongo myDB_name --eval "printjson(db.livres_data.aggregate([{'$match': {'livres': '$1'}},{'$group': {'_id': null,'MA': {'$max': 'val'}}}]))"

и выполнил его как: script_name. sh poeme

Я получил следующую ошибку:

MongoDB shell version v4.2.3
connecting to: mongodb://127.0.0.1:27017/myDB_name?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("d7fa1320-6f51-4836-829d-50b823f5f007") }
MongoDB server version: 4.2.0
2020-05-04T08:38:50.399+0000 E  QUERY    [js] uncaught exception: Error: command failed: {
    "ok" : 0,
    "errmsg" : **"Unrecognized pipeline stage name: ''",**
    "code" : 40324,
    "codeName" : "Location40324"
} : aggregate failed :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
doassert@src/mongo/shell/assert.js:18:14
_assertCommandWorked@src/mongo/shell/assert.js:583:17
assert.commandWorked@src/mongo/shell/assert.js:673:16
DB.prototype._runAggregate@src/mongo/shell/db.js:266:5
DBCollection.prototype.aggregate@src/mongo/shell /collection.js:1012:12
@(shell eval):1:11
2020-05-04T08:38:50.399+0000 E  -        [main] exiting with code -4

Любая помощь приветствуется. Большое спасибо.

...