1

次のようなコレクションにドキュメントがあります。

db.persons.insert ( {
    name: {first: 'Nancy', last: 'Karin'},
    gender: 'F',
    yearOfBirth: 1992,
    livesIn: 'Montreal',
    countriesVisited: ['Canada', 'United States of America'],
    languages: [
        {name: 'English', proficiency: 'Fluent'},
        {name: 'French', proficiency: 'Fluent'},
        {name: 'German', proficiency: 'Intermediate'},
        {name: 'Greek', proficiency: 'Intermediate'},
        {name: 'Latin', proficiency: 'Intermediate'},
        {name: 'Sanskrit', proficiency: 'Beginner'} ]
} )

次のコマンドでエラーが発生しています。

db.persons.update (
    {'name.first': 'Nancy', 'name.last': 'Karin', 'languages.name': 'German'},
    {$set: {'languages.?.name': 'Italian'} }
)

私が得るエラーメッセージは次のとおりです。

can't append to array using string field name: ?

私は自分が犯している間違いを見ることができません。上記のコマンドは、MongoDB 2.4.0 ドキュメントの 185 ページ「位置を指定せずに要素を更新する」に従っているようです。

ご協力いただきありがとうございます。

プラデュムン

4

3 に答える 3

1

docs?に従って置き換え$ます。

于 2013-09-21T08:33:23.710 に答える
1
db.persons.update (
    {'name.first': 'Nancy', 'name.last': 'Karin', 'languages.name': 'German'},
    {$set: {'languages.$.name': 'Italian'} }

既存のデータを変更するためにデータを配置する必要がある配列のインデックスがわからない場合は、インデックス番号の代わりに $ を使用する必要があります。

于 2017-04-14T09:38:06.293 に答える