gpt4 book ai didi

Mongodb 4.4.0 FieldPath 字段名称不能以开头

转载 作者:行者123 更新时间:2023-12-04 13:12:49 24 4
gpt4 key购买 nike

我只是浏览有关 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

我对另一个集合和新集合做了同样的事情,但遇到了同样的错误

我尝试对字段使用 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} }
]
)

我在 docker 结构中使用 mongo,这是我用于此 img 的 docker-compose

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

最佳答案

我遇到了同样的问题,我可能有一些解决方案。 $sort 运算符似乎有问题。尝试将其放在 $project 运算符之后。

在我的情况下,以下管道存在相同的错误:先是 $sort,然后是 $unwind,然后是 $project。如果 $sort 放在 $unwind 之后,错误消失,无论 $unwind 是否放在 $project 之后。

我不完全了解情况,但当涉及第三方运算符时,$sort 和 $project 之间似乎存在一些模糊的交互。

关于Mongodb 4.4.0 FieldPath 字段名称不能以开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63296885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com