2017-01-12 12 views
1

私は現在、一つの文書で1つのコレクション(「場所」)とモンゴDBデータベースを持っている:MongoDBの変更/更新サブ文書のフィールド

{ 
"_id" : ObjectId("5875653b89513c8328416522"), 
"name" : "Starcups", 
"address" : "125 High Street, Reading, RG6 1PS", 
"rating" : 3, 
"facilities" : [ 
    "Hot drinks", 
    "Food", 
    "Premium wifi" 
], 
"coords" : [ 
    -0.9690884, 
    51.455041 
], 
"openingTimes" : [ 
    { 
     "days" : "Monday - Friday", 
     "opening" : "7:00am", 
     "closing" : "7:00pm", 
     "closed" : false 
    }, 
    { 
     "days" : "Saturday", 
     "opening" : "8:00am", 
     "closing" : "5:00pm", 
     "closed" : false 
    }, 
    { 
     "days" : "Sunday", 
     "closed" : true 
    } 
], 
"reviews" : [ 
    { 
     "author" : "Simon Holmes", 
     "id" : ObjectId("5875663389513c8328416523"), 
     "rating" : 5, 
     "timestamp" : ISODate("2013-07-15T23:00:00Z"), 
     "reviewText" : "What a great place. I can't say enough good things about it." 
    } 
] 
} 

私は、フィールド「ID」を変更する必要があります(サブ文書のレビューの一部)を "_id"に変更します。

db.locations.update({}, {$rename:{"reviews.id":"reviews._id"}}, false, true); 

をしかし、私は、次のエラーが表示さ:私はStackExchange、無駄に以下のコード上の他の同様の例を使用して、試してみましたが、私はいずれかを変更しようとすると、私は同じエラーを取得

WriteResult({ 
"nMatched" : 0, 
"nUpserted" : 0, 
"nModified" : 0, 
"writeError" : { 
    "code" : 16837, 
    "errmsg" : "cannot use the part (reviews of reviews.id) to traverse the element ({reviews: [ { author: \"Simon Holmes\", id: ObjectId('5875663389513c8328416523'), rating: 5.0, timestamp: new Date(1373929200000), reviewText: \"What a great place. I can't say enough good things about it.\" } ]})" 
} 
}) 

を他のフィールド。誰かが私を正しい方向に向けることができますか?

更新:

これは、次のコードとしてサブ文書のフィールドを評価する問題であるように思わ

は罰金実行:

db.locations.update({}, {$rename:{"name":"names"}}, false, true); 

私はまた、関連するドキュメントを検索しようとしている:https://docs.mongodb.com/manual/reference/operator/update/rename/

答えて

0

ですクチコミがArray

であるため、$renameにできません新しい名前を$に設定し、古い名前を$に設定する必要があります

+0

ありがとうございます - これは[]がレビューの権利内で異なる値を囲んでいるためですか?また、私は他の場所からこのデータを利用しているので、配列がこの例ではオブジェクトよりも有用な理由は何ですか?各「場所」エントリに複数のレビューが添付されている可能性があります。それが理由だろうか? – Ctrp

関連する問題