我有一组用户。每个都有一个书签数组。每个书签都有其所属的类别数组。导致这样的结构:
[
{name: "Bob",
bookmarks: [
{url: "http://duckduckgo.com",
categories: [
"Search",
"Ducks",
],
},
],
},
]
现在给定名称,URL和类别名称。我要删除相应书签的类别。但是我的问题是,所有尝试都会返回整个用户或删除整个书签,而不仅仅是类别。
到目前为止,这是我最好的使用mgo驱动程序的尝试:
type arbitraryJson map[string]interface{}
user := "Bob"
bookmarkURL := url.Parse("http://duckduckgo.com")
tagName := "Search"
err = userDB.Update(
arbitraryJson{
"name": user,
"bookmarks.url": bookmarkURL.String(),
},
arbitraryJson{
"$pull": arbitraryJson{
"bookmarks.categories": tagName,
},
},
)
(我认为)哪个翻译成mongo查询:
db.users.updateOne(
{ name: "Bob",
bookmarks.url: "http://duckduckgo.com" }
{
$pull: { bookmarks.categories: "search" }
}
)