У меня есть этот документ MongoDB:
{
"_id" : 1,
title: "abc123",
isbn: "0001122223334",
author: { last: "zzz", first: "aaa" },
copies: 5
}
Использование $project
(оператор агрегации) Я должен изменить предыдущую схему, чтобы получить:
{
"_id" : 1,
field: {key:"title", value:"abc123"},
isbn: "0001122223334",
author: { last: "zzz", first: "aaa" },
copies: 5
}
Для достигла моей цели. Я использовал следующую агрегацию:
db.book.aggregate([{$project: {"field": {"key":"title", "value":"$title"}}}])
, но я получил ошибку:
{
"ok" : 0,
"errmsg" : "FieldPath 'isbn' doesn't start with $",
"code" : 16873
} : aggregate failed
Я не понимаю, почему это агрегация не работает, так как если я хочу, чтобы изменить предыдущую схему, чтобы получить:
{
"_id" : 1,
"author" : {
"last" : "zzz",
"first" : "aaa"
},
"copies" : 5,
"fieldTitle" : {
"key" : "abc123"
}
}
я могу использовать эту агрегацию (и это работает):
db.book.aggregate([{$project: {_id:1, fieldTitle:{key:"$title"}, author:1, copies:1}}])