Имена полей Mongodb 4.4.0 FieldPath могут не начинаться с - PullRequest
0 голосов
/ 07 августа 2020

Я просто просматриваю документацию по mongodb и просто пытаюсь использовать агрегирование, и когда мой запрос содержит раздел { $project: { aw_product_id: 1, _id: 0} }, я получил ошибку, раздел $project все выглядит правильно, столбец aw_product_id присутствует в моей модели, я пытаюсь изменить его на другой столбец, но по-прежнему сталкивается с той же ошибкой. Что я делаю неправильно?

db.version() -> 4.4.0

db.getCollection('AwinProduct').aggregate(
   [
     { $match: { $text: { $search: "Sko Nike Classic Cortez för män -Svart", $language: 'sv'  } } },
     { $sort: { score: { $meta: "textScore" } } },
     { $project: { aw_product_id: 1, _id: 0} }
   ]
)

и столкнулся с тем, что

не может выполнить скрипт.

Error: command failed: {
    "ok" : 0,
    "errmsg" : "FieldPath field names may not start with '$'.",
    "code" : 16410,
    "codeName" : "Location16410"
} : aggregate failed 
Details:
_getErrorWithCode@src/mongo/shell/utils.js:25:13
doassert@src/mongo/shell/assert.js:18:14
_assertCommandWorked@src/mongo/shell/assert.js:534:17
assert.commandWorked@src/mongo/shell/assert.js:618:16
DB.prototype._runAggregate@src/mongo/shell/db.js:260:9
DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1062:12
DBCollection.prototype.aggregate@:1:355
@(shell):1:1

I сделал то же самое для другой коллекции и для новой коллекции и столкнулся с той же ошибкой

Я пытался использовать qoutes для полей, но все равно та же ошибка

db.getCollection('AwinProduct').aggregate(
   [
     { $match: { $text: { $search: "Sko Nike Classic Cortez för män -Svart", $language: 'sv'  } } },
     { $sort: { score: { $meta: "textScore" } } },
     { $project: { "currency": 1, _id: 0} }
   ]
)

Я использую mon go в Структура docker, это моя docker -композиция для этого img

mongodb:
    image: mongo:latest
    container_name: mongodb
    hostname: mongodb
    volumes:
        - ./docker/mongodb/mongod.conf:/etc/mongod.conf
        - ./docker/mongodb/initdb.d/:/docker-entrypoint-initdb.d/
        - ./data/momgo/:/data/db/
        - ./docker/mongodb/data/log/:/var/log/mongodb/
        - ./docker/mongodb/home:/home/mongodb
    env_file:
        - .env
    environment:
        MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
        MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
        MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
    ports:
        - "27017:27017"
    command: ["-f", "/etc/mongod.conf"]
    networks:
        - php
...