mongodb запрашивает массив в массиве в массиве - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть коллекция пользователей.У каждого из них есть множество закладок.Каждая закладка имеет массив категорий, к которым она принадлежит.Приводит к структуре, подобной этой:

[
    {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,
        },
    },
)

Какойпереводит (я думаю) на запрос монго:

db.users.updateOne(
   { name: "Bob",
     bookmarks.url: "http://duckduckgo.com" }
   {
     $pull: { bookmarks.categories: "search" }
   }
)
...