Próbuję dodać nowe {pole: wartość} do wpisu na blogu. Na przykład, jeśli chcę zacząć śledzić wyświetlenia na stronach internetowych. Blog_posts.url: "http://www.example.com/01.html", jak mogę dodać ten atrybut wyświetleń do tego posta na blogu?MongoDB, dodaj nowe {pole: wartość} w istniejącym osadzonym dokumencie z notacją wielu kropek?
Moja obecna struktura dokumentu:
{
email_address: '[email protected]',
password: 'random_password',
first_name: 'John',
last_name: 'Doe',
user_type: 'WEBMASTER',
newsletter: 'NO',
websites: [{
main_title: 'My Blog Website',
main_url: 'http://www.example.com',
blog_posts: [{
url: 'http://www.example.com/01.html',
title:'My first blog post',
description: 'My first description.'
}, {
url: 'http://www.example.com/02.html',
title: 'My second blog post',
description: 'My second description.'
}, {
url: 'http://www.example.com/03.html',
title: 'My third blog post',
description: 'My third description.'
}, {
url: 'http://www.example.com/04.html',
title: 'My fourth blog post',
description: 'My fourth description.'
}]
}]
}
Oto co myślę będzie działać przy użyciu aktualizacji i podejmowania upsert PRAWDA.
db.my_collection.update ({ 'websites.blog_posts.url': 'http://www.example.com/01.html'}, { '$ zestaw': { 'websites.blog_posts. wyświetlenia: 549}}, true)
błąd, który otrzymałem to: * nie może dołączyć do tablicy przy użyciu nazwy pola string [blog_posts] *
może "$ zestaw" jest nie jest to poprawne, a może nie mogę odwoływać się do tego z notacją kropkową? Właśnie zacząłem używać MongoDB wczoraj, każda pomoc byłaby świetna.
Dziękujemy!
Masz rację, moim problemem był mój schemat i moje niepoprawne nawiasy do przechowywania osadzonego dokumentu. Zamiast tego użyłem nawiasów dla tablicy. Teraz z powodzeniem dodałem nowe pola o 4 poziomach głębokości, używając notacji kropkowej z odpowiednim schematem. – Chris
Niesamowite, powodzenia;) –