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