{"id":2514,"date":"2017-02-02T13:42:17","date_gmt":"2017-02-02T13:42:16","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2514"},"modified":"2025-06-13T19:29:27","modified_gmt":"2025-06-14T02:29:27","slug":"net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/","title":{"rendered":"Estruturas de dados de lista, fila e dicion\u00e1rio do .NET Core com o suporte do Couchbase"},"content":{"rendered":"<div id=\"preamble\">\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>A adi\u00e7\u00e3o do <a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/data\/data.html\">API de subdocumento<\/a> para o Couchbase 4.5 abriu o caminho para o suporte eficiente \u00e0 estrutura de dados em <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Couchbase<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Nesta postagem do blog, vou mostrar uma demonstra\u00e7\u00e3o de tr\u00eas tipos de estruturas de dados que voc\u00ea pode usar com o Couchbase .NET SDK:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>Lista - uma lista de objetos, basicamente uma lista apoiada pelo Couchbase<\/li>\n<li>Queue - uma fila de objetos, basicamente uma fila apoiada pelo Couchbase<\/li>\n<li>Dicion\u00e1rio - um dicion\u00e1rio de objetos, basicamente um Dictionary apoiado pelo Couchbase<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>Tamb\u00e9m discutirei um pouco sobre como isso funciona nos bastidores.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Se quiser, voc\u00ea pode jogar em casa. O c\u00f3digo-fonte deste blog \u00e9 <a href=\"https:\/\/github.com\/couchbaselabs\/blog-source-code\/tree\/master\/Groves\/050DataStructuresDotNet\/src\">dispon\u00edvel no GitHub<\/a>e <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/\">O download do Couchbase Server \u00e9 gratuito<\/a> (as visualiza\u00e7\u00f5es da vers\u00e3o 5 para desenvolvedores est\u00e3o dispon\u00edveis mensalmente).<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"truelist\">Lista<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Uma lista \u00e9 uma estrutura de dados .NET que \u00e9 mantida na mem\u00f3ria. Com as estruturas de dados fornecidas pelo SDK do Couchbase .NET, voc\u00ea pode armazen\u00e1-la em um documento do Couchbase.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Para criar uma lista com base no Couchbase:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-C#\">var list = new CouchbaseList(bucket, \"myList\");<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>A string \"myList\" corresponde \u00e0 chave do documento que conter\u00e1 a lista. Ao usar <code>CouchbaseList<\/code>um \u00fanico documento com essa chave ser\u00e1 criado (se ainda n\u00e3o existir um). Se j\u00e1 existir um documento com essa chave, <code>CouchbaseList<\/code> o utilizar\u00e1.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Agora voc\u00ea pode adicionar\/remover itens da lista e tudo isso ser\u00e1 mantido no documento. Voc\u00ea tamb\u00e9m pode executar outras opera\u00e7\u00f5es, como obter uma contagem dos itens na lista.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-C#\">\/\/ add 10 objects to the list\r\nfor(var i = 0; i &lt; 10; i++)\r\n    list.Add(new { num = i, foo = \"bar\" + Guid.NewGuid()});\r\n\r\n\/\/ remove an item from the list by index\r\nlist.RemoveAt(5);\r\n\r\n\/\/ show an item from the list by index\r\nvar item = list[5];\r\nConsole.WriteLine(\"5th item in the list: \" + item.foo + \" \/ \" + item.num);<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>O c\u00f3digo acima resultaria em um documento com uma chave \"myList\" que se parece com o seguinte. Observe que o item com n\u00famero 5 n\u00e3o est\u00e1 listado, pois foi removido.<\/p>\n<p>H\u00e1 algo sutil no exemplo acima que precisa ser destacado. Observe que eu usei <code>var item = list[5];<\/code> e depois <code>item.foo<\/code> e <code>item.num<\/code> no <code>WriteLine<\/code>. Se eu usasse <code>lista[5].foo<\/code> e <code>lista[5].num<\/code> diretamente, o que resultaria em duas chamadas de subdocumentos diferentes para o Couchbase. Al\u00e9m de essa efici\u00eancia n\u00e3o ser a ideal, \u00e9 poss\u00edvel que os valores mudem entre as duas chamadas.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-JavaScript\">[\r\n  {\r\n    \"num\": 0,\r\n    \"foo\": \"bara1fd74ee-a790-4a0f-843c-abe449cb8b1d\"\r\n  },\r\n  {\r\n    \"num\": 1,\r\n    \"foo\": \"bardc1d8f9a-4e93-46f9-b8ae-ec036743869e\"\r\n  },\r\n  {\r\n    \"num\": 2,\r\n    \"foo\": \"bar9a60abe9-1e04-4fba-bd1f-f1ec39d69f56\"\r\n  },\r\n  {\r\n    \"num\": 3,\r\n    \"foo\": \"bar9566605b-7abf-4a0c-aa9d-63b98ce86274\"\r\n  },\r\n  {\r\n    \"num\": 4,\r\n    \"foo\": \"bar6261323f-de50-42a7-a8a7-6fcafb356deb\"\r\n  },\r\n  {\r\n    \"num\": 6,\r\n    \"foo\": \"bar13832bcb-2aa0-491a-a01f-1d496f999ffc\"\r\n  },\r\n\r\n  \/\/ ... etc ...\r\n]<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"truequeue\">Fila<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Muito semelhante \u00e0 Lista, voc\u00ea pode criar uma fila apoiada no Couchbase:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-C#\">var queue = new CouchbaseQueue(bucket, \"myQueue\");<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Uma fila \u00e9 armazenada da mesma forma que uma lista. A diferen\u00e7a \u00e9 que a ordena\u00e7\u00e3o \u00e9 significativa, e isso se reflete nas opera\u00e7\u00f5es que voc\u00ea executa em uma fila: Enqueue e Dequeue.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-C#\">for(var i = 0; i &lt; 3; i++)\r\n    queue.Enqueue(new { num = i, foo = \"baz\" + Guid.NewGuid()});\r\n\r\n\/\/ dequeue\r\nvar item = queue.Dequeue();\r\nConsole.WriteLine(\"item num \" + item.num + \" was dequeued. There are now \" + queue.Count + \" items left in the queue.\");<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>O c\u00f3digo acima resultaria em um documento com uma chave \"myQueue\" (veja o JSON abaixo). Observe que n\u00e3o h\u00e1 nenhum objeto na matriz com o n\u00famero \"0\" porque ele foi retirado da fila.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-JavaScript\">[\r\n  {\r\n    \"num\": 1,\r\n    \"foo\": \"baz64bb62b6-bf23-4e52-b584-d2fa02accce6\"\r\n  },\r\n  {\r\n    \"num\": 2,\r\n    \"foo\": \"baz0a160bd9-aa7b-4c45-9e19-d1a3d982a554\"\r\n  }\r\n]<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"truedictionary\">Dicion\u00e1rio<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Espero que esteja vendo um padr\u00e3o agora. Para criar um dicion\u00e1rio:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-C#\">var dict = new CouchbaseDictionary&lt;string,dynamic&gt;(bucket, \"myDict\");<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Novamente, um documento ser\u00e1 criado com a chave fornecida. As opera\u00e7\u00f5es que podem ser realizadas incluem Adicionar, Remover e o indexador <code>[]<\/code> opera\u00e7\u00e3o.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-C#\">for(var i = 0; i &lt; 5; i++)\r\n    dict.Add(\"key\" + Guid.NewGuid(), new { num = i, foo = \"qux\" + Guid.NewGuid()} );\r\n\r\n\/\/ print out keys in the dictionary\r\nConsole.WriteLine(\"There are \" + dict.Keys.Count + \" keys in the dictionary.\");\r\nforeach(var key in dict.Keys)\r\n    Console.WriteLine(\"key: \" + key + \", value.num: \" + dict[key].num);<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Um documento de dicion\u00e1rio tem a seguinte apar\u00eancia:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight\"><code class=\"language-JavaScript\">{\r\n  \"key5aa2520d-123c-4fca-b444-b0cb8846d46e\": {\r\n    \"num\": 0,\r\n    \"foo\": \"qux93b197dc-f175-4246-a38d-7b080eb9bea0\"\r\n  },\r\n  \"key55dee298-14c6-4da7-97a8-66c69d7e8a70\": {\r\n    \"num\": 1,\r\n    \"foo\": \"quxa593ee4c-682c-402d-887b-3f09f029e9b6\"\r\n  },\r\n  \"key3386afcf-7b70-4e4d-b9ae-6defbca33fe7\": {\r\n    \"num\": 2,\r\n    \"foo\": \"qux1259ae94-1008-4e1f-86a1-bfbd0873b09b\"\r\n  },\r\n  \"key2bc8c451-f125-4282-9fb4-7ea15f4b3168\": {\r\n    \"num\": 3,\r\n    \"foo\": \"qux1b6fb62b-9918-46dc-9a2f-610a55d017ef\"\r\n  },\r\n  \"key3f7041f3-abd3-49c7-a373-454cbd2ac0fc\": {\r\n    \"num\": 4,\r\n    \"foo\": \"qux0a87655f-197d-4fb2-8a54-b1de6e288de4\"\r\n  }\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Uma observa\u00e7\u00e3o sobre a din\u00e2mica C#: usei <code>din\u00e2mico<\/code> para manter os exemplos de c\u00f3digo curtos e simples. Em seu aplicativo, provavelmente ser\u00e1 melhor usar um tipo C# definido de verdade. Tudo isso \u00e9 serializado para JSON no Couchbase, \u00e9 claro.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"truebehind-the-scenes\">Nos bastidores<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Antes de a API de subdocumentos ser lan\u00e7ada no Couchbase Server 4.5, essas estruturas de dados eram <em>poss\u00edvel<\/em>\u00e9 claro. O problema \u00e9 que voc\u00ea carregaria o documento inteiro, o colocaria em uma lista, faria altera\u00e7\u00f5es na lista e depois salvaria o documento inteiro. Se voc\u00ea tiver estruturas de dados grandes, mas estiver apenas lendo ou fazendo altera\u00e7\u00f5es em um \u00fanico item, isso geralmente resultaria em perda de tempo e de largura de banda e, possivelmente, em maior conten\u00e7\u00e3o.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>A API de subdocumentos (que voc\u00ea pode usar diretamente; eu a abordei na se\u00e7\u00e3o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/sub-document-api-in-couchbase-server-4.5-with-the-.net-sdk-revisted\/\">API de subdocumento no Couchbase Server 4.5 com o SDK do .NET (revisitado)<\/a> ) \u00e9 usado nos bastidores do <code>CouchbaseList<\/code>, <code>CouchbaseQueue<\/code>e <code>CouchbaseDictionary<\/code>. Portanto, quando voc\u00ea adiciona um item a um <code>CouchbaseList<\/code>Por exemplo, apenas esse item est\u00e1 sendo enviado pelo cabo, n\u00e3o a lista inteira.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Algumas opera\u00e7\u00f5es ainda precisar\u00e3o obter o documento inteiro. Por exemplo, iterar em uma cole\u00e7\u00e3o usando um <code>antes de<\/code> recuperar\u00e1 o documento completo. A remo\u00e7\u00e3o de um item de uma lista resultar\u00e1 na digitaliza\u00e7\u00e3o do documento completo. Por\u00e9m, se as opera\u00e7\u00f5es de subdocumento surgirem no futuro para dar suporte a essas a\u00e7\u00f5es, as implementa\u00e7\u00f5es do SDK ser\u00e3o atualizadas de acordo.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"truesummary\">Resumo<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Essas estruturas de dados s\u00e3o outra ferramenta para ajud\u00e1-lo a gerenciar seus dados. Como elas usam a API de subdocumento, geralmente t\u00eam mais desempenho do que uma abordagem de documento inteiro. Para obter mais detalhes, consulte a se\u00e7\u00e3o <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/dotnet\/datastructures.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Documenta\u00e7\u00e3o sobre estruturas de dados<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Tem d\u00favidas? Coment\u00e1rios? Precisa de ajuda? <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Visite nossos f\u00f3runs<\/a>Entre em contato comigo <a href=\"https:\/\/twitter.com\/mgroves\">Twitter @mgroves<\/a>ou deixe um coment\u00e1rio.<\/p>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>The addition of the sub-document API to Couchbase 4.5 has paved the way for efficient data structure support in Couchbase. In this blog post, I\u2019m going to show a demo of three types of data structures you can use with [&hellip;]<\/p>","protected":false},"author":71,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,1816,1819],"tags":[1447,1800],"ppma_author":[8937],"class_list":["post-2514","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-couchbase-server","category-data-modeling","tag-data-modeling","tag-data-structures"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>.NET Core List, Queue, and Dictionary Data Structures backed by Couchbase - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase\" \/>\n<meta property=\"og:description\" content=\"The addition of the sub-document API to Couchbase 4.5 has paved the way for efficient data structure support in Couchbase. In this blog post, I\u2019m going to show a demo of three types of data structures you can use with [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-02T13:42:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:29:27+00:00\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase\",\"datePublished\":\"2017-02-02T13:42:16+00:00\",\"dateModified\":\"2025-06-14T02:29:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/\"},\"wordCount\":739,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Data Modeling\",\"Data structures\"],\"articleSection\":[\".NET\",\"Couchbase Server\",\"Data Modeling\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/\",\"name\":\".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-02-02T13:42:16+00:00\",\"dateModified\":\"2025-06-14T02:29:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/","og_locale":"pt_BR","og_type":"article","og_title":".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase","og_description":"The addition of the sub-document API to Couchbase 4.5 has paved the way for efficient data structure support in Couchbase. In this blog post, I\u2019m going to show a demo of three types of data structures you can use with [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-02-02T13:42:16+00:00","article_modified_time":"2025-06-14T02:29:27+00:00","author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase","datePublished":"2017-02-02T13:42:16+00:00","dateModified":"2025-06-14T02:29:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/"},"wordCount":739,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Data Modeling","Data structures"],"articleSection":[".NET","Couchbase Server","Data Modeling"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/","name":".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-02-02T13:42:16+00:00","dateModified":"2025-06-14T02:29:27+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/net-core-list-queue-and-dictionary-data-structures-backed-by-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":".NET Core List, Queue, and Dictionary Data Structures backed by Couchbase"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves \u00e9 um cara que adora programar. N\u00e3o importa se \u00e9 C#, jQuery ou PHP: ele enviar\u00e1 solicita\u00e7\u00f5es de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente s\u00eanior de marketing de produtos da Couchbase. Seu tempo livre \u00e9 passado com a fam\u00edlia, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele \u00e9 autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves \u00e9 um cara que adora programar.  N\u00e3o importa se \u00e9 C#, jQuery ou PHP: ele enviar\u00e1 solicita\u00e7\u00f5es de pull para qualquer coisa.  Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90.  Atualmente, ele trabalha como gerente s\u00eanior de marketing de produtos da Couchbase. Seu tempo livre \u00e9 passado com a fam\u00edlia, assistindo aos Reds e participando da comunidade de desenvolvedores.  Ele \u00e9 autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2514"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2514\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2514"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}