[{"data":1,"prerenderedAt":1913},["ShallowReactive",2],{"navigation_docs":3,"-docs-collections-define":205,"-docs-collections-define-surround":1908},[4,24,51,73,95,112,158,171],{"title":5,"path":6,"stem":7,"children":8,"icon":23},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[9,11,15,19],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation",{"title":16,"path":17,"stem":18},"Configuration","/docs/getting-started/configuration","docs/1.getting-started/3.configuration",{"title":20,"path":21,"stem":22},"Migration","/docs/getting-started/migration","docs/1.getting-started/4.migration","i-lucide-square-play",{"title":25,"icon":26,"path":27,"stem":28,"children":29,"page":50},"Collections","i-lucide-database","/docs/collections","docs/2.collections",[30,34,38,42,46],{"title":31,"path":32,"stem":33},"Define","/docs/collections/define","docs/2.collections/1.define",{"title":35,"path":36,"stem":37},"Types","/docs/collections/types","docs/2.collections/2.types",{"title":39,"path":40,"stem":41},"Sources","/docs/collections/sources","docs/2.collections/3.sources",{"title":43,"path":44,"stem":45},"Validators","/docs/collections/validators","docs/2.collections/4.validators",{"title":47,"path":48,"stem":49},"Components","/docs/collections/inherit-schema-from-component","docs/2.collections/5.inherit-schema-from-component",false,{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":50},"Files","i-lucide-file","/docs/files","docs/3.files",[57,61,65,69],{"title":58,"path":59,"stem":60},"Markdown","/docs/files/markdown","docs/3.files/1.markdown",{"title":62,"path":63,"stem":64},"YAML","/docs/files/yaml","docs/3.files/2.yaml",{"title":66,"path":67,"stem":68},"JSON","/docs/files/json","docs/3.files/3.json",{"title":70,"path":71,"stem":72},"CSV","/docs/files/csv","docs/3.files/4.csv",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":50},"Query Utils","i-lucide-square-function","/docs/utils","docs/4.utils",[79,83,87,91],{"title":80,"path":81,"stem":82},"queryCollection","/docs/utils/query-collection","docs/4.utils/1.query-collection",{"title":84,"path":85,"stem":86},"queryCollectionNavigation","/docs/utils/query-collection-navigation","docs/4.utils/2.query-collection-navigation",{"title":88,"path":89,"stem":90},"queryCollectionItemSurroundings","/docs/utils/query-collection-item-surroundings","docs/4.utils/3.query-collection-item-surroundings",{"title":92,"path":93,"stem":94},"queryCollectionSearchSections","/docs/utils/query-collection-search-sections","docs/4.utils/4.query-collection-search-sections",{"title":47,"icon":96,"path":97,"stem":98,"children":99,"page":50},"i-lucide-square-code","/docs/components","docs/5.components",[100,104,108],{"title":101,"path":102,"stem":103},"ContentRenderer","/docs/components/content-renderer","docs/5.components/0.content-renderer",{"title":105,"path":106,"stem":107},"Slot","/docs/components/slot","docs/5.components/1.slot",{"title":109,"path":110,"stem":111},"Prose Components","/docs/components/prose","docs/5.components/2.prose",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":50},"Deploy","i-lucide-cloud-upload","/docs/deploy","docs/6.deploy",[118,122,126,130,134,138,142,146,150,154],{"title":119,"path":120,"stem":121},"Server","/docs/deploy/server","docs/6.deploy/1.server",{"title":123,"path":124,"stem":125},"Static","/docs/deploy/static","docs/6.deploy/10.static",{"title":127,"path":128,"stem":129},"Serverless","/docs/deploy/serverless","docs/6.deploy/2.serverless",{"title":131,"path":132,"stem":133},"NuxtHub","/docs/deploy/nuxthub","docs/6.deploy/3.nuxthub",{"title":135,"path":136,"stem":137},"Cloudflare Pages","/docs/deploy/cloudflare-pages","docs/6.deploy/4.cloudflare-pages",{"title":139,"path":140,"stem":141},"Cloudflare Workers","/docs/deploy/cloudflare-workers","docs/6.deploy/5.cloudflare-workers",{"title":143,"path":144,"stem":145},"Vercel","/docs/deploy/vercel","docs/6.deploy/6.vercel",{"title":147,"path":148,"stem":149},"Netlify","/docs/deploy/netlify","docs/6.deploy/7.netlify",{"title":151,"path":152,"stem":153},"AWS Amplify","/docs/deploy/aws-amplify","docs/6.deploy/8.aws-amplify",{"title":155,"path":156,"stem":157},"Docker","/docs/deploy/docker","docs/6.deploy/9.docker",{"title":159,"icon":114,"path":160,"stem":161,"children":162,"page":50},"Integrations","/docs/integrations","docs/7.integrations",[163,167],{"title":164,"path":165,"stem":166},"Nuxt i18n","/docs/integrations/i18n","docs/7.integrations/01.i18n",{"title":168,"path":169,"stem":170},"Nuxt LLMs","/docs/integrations/llms","docs/7.integrations/02.llms",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":50},"Advanced","i-lucide-code-xml","/docs/advanced","docs/8.advanced",[177,181,185,189,193,197,201],{"title":178,"path":179,"stem":180},"Full-Text Search","/docs/advanced/fulltext-search","docs/8.advanced/1.fulltext-search",{"title":182,"path":183,"stem":184},"Raw Content","/docs/advanced/raw-content","docs/8.advanced/2.raw-content",{"title":186,"path":187,"stem":188},"SQL Storage","/docs/advanced/database","docs/8.advanced/3.database",{"title":190,"path":191,"stem":192},"Debugging tools","/docs/advanced/tools","docs/8.advanced/4.tools",{"title":194,"path":195,"stem":196},"Hooks","/docs/advanced/hooks","docs/8.advanced/5.hooks",{"title":198,"path":199,"stem":200},"Custom Source","/docs/advanced/custom-source","docs/8.advanced/6.custom-source",{"title":202,"path":203,"stem":204},"Transformers","/docs/advanced/transformers","docs/8.advanced/8.transformers",{"id":206,"title":207,"body":208,"description":1901,"extension":1902,"links":1903,"meta":1904,"navigation":1905,"path":32,"seo":1906,"stem":33,"__hash__":1907},"docs/docs/2.collections/1.define.md","Define Content Collections",{"type":209,"value":210,"toc":1892},"minimark",[211,220,227,234,239,242,245,280,284,290,293,465,485,490,493,508,733,749,753,757,760,1201,1204,1215,1220,1256,1261,1282,1286,1294,1553,1560,1564,1571,1773,1776,1882,1885,1888],[212,213,214,215,219],"p",{},"The Nuxt Content module automatically parses any content files within the ",[216,217,218],"code",{},"content/"," directory located at the root of your Nuxt application. This setup allows you to freely structure the folder to suit your project's needs.",[212,221,222,223,226],{},"For better organization, consider using Content Collections, which let you categorize and manage content more effectively. These collections are defined in a ",[216,224,225],{},"content.config.ts"," file.",[228,229,230,231,233],"warning",{},"If no ",[216,232,225],{}," file is present, all files within the content folder are parsed and imported by default. However, once a config file is added, only files matching the specified path patterns defined in collections will be imported.",[235,236,238],"h2",{"id":237},"what-are-content-collections","What are Content Collections?",[212,240,241],{},"Content Collections organize related items within your Nuxt Content project. They provide a structured way to manage your content, making it easier to query, display, and maintain your site's data.",[212,243,244],{},"Key features include:",[246,247,248,256,262,268,274],"ul",{},[249,250,251,255],"li",{},[252,253,254],"strong",{},"Logical Grouping",": Group similar content together, such as blog posts, product pages, or documentation articles",[249,257,258,261],{},[252,259,260],{},"Shared Configuration",": Apply common settings and validations across all items within a collection",[249,263,264,267],{},[252,265,266],{},"Improved Querying",": Fetch and filter related content items efficiently",[249,269,270,273],{},[252,271,272],{},"Automatic Type Inference",": Get type safety and autocompletion in your development environment",[249,275,276,279],{},[252,277,278],{},"Flexible Structure",": Organize collections by content type, category, or any other logical grouping that suits your needs",[235,281,283],{"id":282},"defining-collections","Defining Collections",[212,285,286,287,289],{},"Create a ",[216,288,225],{}," file in your project's root directory. This special file configures your collections database, utility types, and content handling.",[212,291,292],{},"Here's a basic example:",[294,295,300],"pre",{"className":296,"code":297,"filename":225,"language":298,"meta":299,"style":299},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineCollection, defineContentConfig } from '@nuxt/content'\n\nexport default defineContentConfig({\n  collections: {\n    docs: defineCollection({\n      // Specify the type of content in this collection\n      type: 'page',\n      // Load every file inside the `content` directory\n      source: '**',\n    })\n  }\n})\n","ts","",[216,301,302,341,348,366,379,393,400,419,425,442,451,457],{"__ignoreMap":299},[303,304,307,311,315,319,322,325,328,331,334,338],"span",{"class":305,"line":306},"line",1,[303,308,310],{"class":309},"s7zQu","import",[303,312,314],{"class":313},"sMK4o"," {",[303,316,318],{"class":317},"sTEyZ"," defineCollection",[303,320,321],{"class":313},",",[303,323,324],{"class":317}," defineContentConfig",[303,326,327],{"class":313}," }",[303,329,330],{"class":309}," from",[303,332,333],{"class":313}," '",[303,335,337],{"class":336},"sfazB","@nuxt/content",[303,339,340],{"class":313},"'\n",[303,342,344],{"class":305,"line":343},2,[303,345,347],{"emptyLinePlaceholder":346},true,"\n",[303,349,351,354,357,360,363],{"class":305,"line":350},3,[303,352,353],{"class":309},"export",[303,355,356],{"class":309}," default",[303,358,324],{"class":359},"s2Zo4",[303,361,362],{"class":317},"(",[303,364,365],{"class":313},"{\n",[303,367,369,373,376],{"class":305,"line":368},4,[303,370,372],{"class":371},"swJcz","  collections",[303,374,375],{"class":313},":",[303,377,378],{"class":313}," {\n",[303,380,382,385,387,389,391],{"class":305,"line":381},5,[303,383,384],{"class":371},"    docs",[303,386,375],{"class":313},[303,388,318],{"class":359},[303,390,362],{"class":317},[303,392,365],{"class":313},[303,394,396],{"class":305,"line":395},6,[303,397,399],{"class":398},"sHwdD","      // Specify the type of content in this collection\n",[303,401,403,406,408,410,413,416],{"class":305,"line":402},7,[303,404,405],{"class":371},"      type",[303,407,375],{"class":313},[303,409,333],{"class":313},[303,411,412],{"class":336},"page",[303,414,415],{"class":313},"'",[303,417,418],{"class":313},",\n",[303,420,422],{"class":305,"line":421},8,[303,423,424],{"class":398},"      // Load every file inside the `content` directory\n",[303,426,428,431,433,435,438,440],{"class":305,"line":427},9,[303,429,430],{"class":371},"      source",[303,432,375],{"class":313},[303,434,333],{"class":313},[303,436,437],{"class":336},"**",[303,439,415],{"class":313},[303,441,418],{"class":313},[303,443,445,448],{"class":305,"line":444},10,[303,446,447],{"class":313},"    }",[303,449,450],{"class":317},")\n",[303,452,454],{"class":305,"line":453},11,[303,455,456],{"class":313},"  }\n",[303,458,460,463],{"class":305,"line":459},12,[303,461,462],{"class":313},"}",[303,464,450],{"class":317},[228,466,467,474],{},[212,468,469,470,473],{},"Currently, a document is designed to be present in only one collection at a time. If a file is referenced in multiple collections, live reload will not work correctly. To avoid this, it is recommended to use the ",[216,471,472],{},"exclude"," attribute to explicitly exclude a document from other collections using appropriate regex patterns.",[212,475,476,477,484],{},"This topic is still under discussion in this issue: ",[478,479,483],"a",{"href":480,"rel":481},"https://github.com/nuxt/content/issues/2966",[482],"nofollow","nuxt/content#2966",".",[486,487,489],"h3",{"id":488},"collection-schema","Collection Schema",[212,491,492],{},"Schemas enforce data consistency within a collection and serve as the source of truth for TypeScript types.",[212,494,495,496,499,500,507],{},"On top of the built-in fields, you can define a schema by adding the ",[216,497,498],{},"schema"," property to your collection by using a ",[478,501,504],{"href":502,"rel":503},"https://zod.dev",[482],[216,505,506],{},"zod"," schema:",[294,509,511],{"className":296,"code":510,"filename":225,"language":298,"meta":299,"style":299},"import { defineCollection, defineContentConfig } from '@nuxt/content'\nimport { z } from 'zod'\n\nexport default defineContentConfig({\n  collections: {\n    blog: defineCollection({\n      type: 'page',\n      source: 'blog/*.md',\n      // Define custom schema for docs collection\n      schema: z.object({\n        tags: z.array(z.string()),\n        image: z.string(),\n        date: z.date()\n      })\n    })\n  }\n})\n",[216,512,513,535,554,558,570,578,591,605,620,625,643,670,688,706,714,721,726],{"__ignoreMap":299},[303,514,515,517,519,521,523,525,527,529,531,533],{"class":305,"line":306},[303,516,310],{"class":309},[303,518,314],{"class":313},[303,520,318],{"class":317},[303,522,321],{"class":313},[303,524,324],{"class":317},[303,526,327],{"class":313},[303,528,330],{"class":309},[303,530,333],{"class":313},[303,532,337],{"class":336},[303,534,340],{"class":313},[303,536,537,539,541,544,546,548,550,552],{"class":305,"line":343},[303,538,310],{"class":309},[303,540,314],{"class":313},[303,542,543],{"class":317}," z",[303,545,327],{"class":313},[303,547,330],{"class":309},[303,549,333],{"class":313},[303,551,506],{"class":336},[303,553,340],{"class":313},[303,555,556],{"class":305,"line":350},[303,557,347],{"emptyLinePlaceholder":346},[303,559,560,562,564,566,568],{"class":305,"line":368},[303,561,353],{"class":309},[303,563,356],{"class":309},[303,565,324],{"class":359},[303,567,362],{"class":317},[303,569,365],{"class":313},[303,571,572,574,576],{"class":305,"line":381},[303,573,372],{"class":371},[303,575,375],{"class":313},[303,577,378],{"class":313},[303,579,580,583,585,587,589],{"class":305,"line":395},[303,581,582],{"class":371},"    blog",[303,584,375],{"class":313},[303,586,318],{"class":359},[303,588,362],{"class":317},[303,590,365],{"class":313},[303,592,593,595,597,599,601,603],{"class":305,"line":402},[303,594,405],{"class":371},[303,596,375],{"class":313},[303,598,333],{"class":313},[303,600,412],{"class":336},[303,602,415],{"class":313},[303,604,418],{"class":313},[303,606,607,609,611,613,616,618],{"class":305,"line":421},[303,608,430],{"class":371},[303,610,375],{"class":313},[303,612,333],{"class":313},[303,614,615],{"class":336},"blog/*.md",[303,617,415],{"class":313},[303,619,418],{"class":313},[303,621,622],{"class":305,"line":427},[303,623,624],{"class":398},"      // Define custom schema for docs collection\n",[303,626,627,630,632,634,636,639,641],{"class":305,"line":444},[303,628,629],{"class":371},"      schema",[303,631,375],{"class":313},[303,633,543],{"class":317},[303,635,484],{"class":313},[303,637,638],{"class":359},"object",[303,640,362],{"class":317},[303,642,365],{"class":313},[303,644,645,648,650,652,654,657,660,662,665,668],{"class":305,"line":453},[303,646,647],{"class":371},"        tags",[303,649,375],{"class":313},[303,651,543],{"class":317},[303,653,484],{"class":313},[303,655,656],{"class":359},"array",[303,658,659],{"class":317},"(z",[303,661,484],{"class":313},[303,663,664],{"class":359},"string",[303,666,667],{"class":317},"())",[303,669,418],{"class":313},[303,671,672,675,677,679,681,683,686],{"class":305,"line":459},[303,673,674],{"class":371},"        image",[303,676,375],{"class":313},[303,678,543],{"class":317},[303,680,484],{"class":313},[303,682,664],{"class":359},[303,684,685],{"class":317},"()",[303,687,418],{"class":313},[303,689,691,694,696,698,700,703],{"class":305,"line":690},13,[303,692,693],{"class":371},"        date",[303,695,375],{"class":313},[303,697,543],{"class":317},[303,699,484],{"class":313},[303,701,702],{"class":359},"date",[303,704,705],{"class":317},"()\n",[303,707,709,712],{"class":305,"line":708},14,[303,710,711],{"class":313},"      }",[303,713,450],{"class":317},[303,715,717,719],{"class":305,"line":716},15,[303,718,447],{"class":313},[303,720,450],{"class":317},[303,722,724],{"class":305,"line":723},16,[303,725,456],{"class":313},[303,727,729,731],{"class":305,"line":728},17,[303,730,462],{"class":313},[303,732,450],{"class":317},[734,735,736,738,739,742,743,748],"note",{},[216,737,337],{}," exposes a ",[216,740,741],{},"z"," object that contains a set of Zod schemas for common data types. Check ",[478,744,747],{"href":745,"rel":746},"https://github.com/colinhacks/zod",[482],"Zod’s README"," for complete documentation on how Zod works and what features are available.",[750,751,752],"tip",{},"You can define as many collections as you want to organize different types of content.",[486,754,756],{"id":755},"database-indexes","Database Indexes",[212,758,759],{},"Optimize query performance by defining indexes on collection columns. Indexes are especially useful for fields used in filtering, sorting, or lookups.",[294,761,763],{"className":296,"code":762,"filename":225,"language":298,"meta":299,"style":299},"import { defineCollection, defineContentConfig } from '@nuxt/content'\nimport { z } from 'zod'\n\nexport default defineContentConfig({\n  collections: {\n    products: defineCollection({\n      type: 'data',\n      source: 'products/*.json',\n      schema: z.object({\n        sku: z.string(),\n        price: z.number(),\n        category: z.string(),\n        inStock: z.boolean(),\n      }),\n      indexes: [\n        // Single column indexes\n        { columns: ['category'] },\n        { columns: ['price'] },\n\n        // Composite index for category + price filtering\n        { columns: ['category', 'price'] },\n\n        // Unique index to ensure SKU uniqueness\n        { columns: ['sku'], unique: true },\n\n        // Custom index name (optional)\n        { columns: ['inStock', 'category'], name: 'idx_stock_category' },\n      ],\n    }),\n  },\n})\n",[216,764,765,787,805,809,821,829,842,857,872,888,905,923,940,958,967,977,982,1008,1030,1035,1041,1070,1075,1081,1116,1121,1127,1171,1179,1188,1194],{"__ignoreMap":299},[303,766,767,769,771,773,775,777,779,781,783,785],{"class":305,"line":306},[303,768,310],{"class":309},[303,770,314],{"class":313},[303,772,318],{"class":317},[303,774,321],{"class":313},[303,776,324],{"class":317},[303,778,327],{"class":313},[303,780,330],{"class":309},[303,782,333],{"class":313},[303,784,337],{"class":336},[303,786,340],{"class":313},[303,788,789,791,793,795,797,799,801,803],{"class":305,"line":343},[303,790,310],{"class":309},[303,792,314],{"class":313},[303,794,543],{"class":317},[303,796,327],{"class":313},[303,798,330],{"class":309},[303,800,333],{"class":313},[303,802,506],{"class":336},[303,804,340],{"class":313},[303,806,807],{"class":305,"line":350},[303,808,347],{"emptyLinePlaceholder":346},[303,810,811,813,815,817,819],{"class":305,"line":368},[303,812,353],{"class":309},[303,814,356],{"class":309},[303,816,324],{"class":359},[303,818,362],{"class":317},[303,820,365],{"class":313},[303,822,823,825,827],{"class":305,"line":381},[303,824,372],{"class":371},[303,826,375],{"class":313},[303,828,378],{"class":313},[303,830,831,834,836,838,840],{"class":305,"line":395},[303,832,833],{"class":371},"    products",[303,835,375],{"class":313},[303,837,318],{"class":359},[303,839,362],{"class":317},[303,841,365],{"class":313},[303,843,844,846,848,850,853,855],{"class":305,"line":402},[303,845,405],{"class":371},[303,847,375],{"class":313},[303,849,333],{"class":313},[303,851,852],{"class":336},"data",[303,854,415],{"class":313},[303,856,418],{"class":313},[303,858,859,861,863,865,868,870],{"class":305,"line":421},[303,860,430],{"class":371},[303,862,375],{"class":313},[303,864,333],{"class":313},[303,866,867],{"class":336},"products/*.json",[303,869,415],{"class":313},[303,871,418],{"class":313},[303,873,874,876,878,880,882,884,886],{"class":305,"line":427},[303,875,629],{"class":371},[303,877,375],{"class":313},[303,879,543],{"class":317},[303,881,484],{"class":313},[303,883,638],{"class":359},[303,885,362],{"class":317},[303,887,365],{"class":313},[303,889,890,893,895,897,899,901,903],{"class":305,"line":444},[303,891,892],{"class":371},"        sku",[303,894,375],{"class":313},[303,896,543],{"class":317},[303,898,484],{"class":313},[303,900,664],{"class":359},[303,902,685],{"class":317},[303,904,418],{"class":313},[303,906,907,910,912,914,916,919,921],{"class":305,"line":453},[303,908,909],{"class":371},"        price",[303,911,375],{"class":313},[303,913,543],{"class":317},[303,915,484],{"class":313},[303,917,918],{"class":359},"number",[303,920,685],{"class":317},[303,922,418],{"class":313},[303,924,925,928,930,932,934,936,938],{"class":305,"line":459},[303,926,927],{"class":371},"        category",[303,929,375],{"class":313},[303,931,543],{"class":317},[303,933,484],{"class":313},[303,935,664],{"class":359},[303,937,685],{"class":317},[303,939,418],{"class":313},[303,941,942,945,947,949,951,954,956],{"class":305,"line":690},[303,943,944],{"class":371},"        inStock",[303,946,375],{"class":313},[303,948,543],{"class":317},[303,950,484],{"class":313},[303,952,953],{"class":359},"boolean",[303,955,685],{"class":317},[303,957,418],{"class":313},[303,959,960,962,965],{"class":305,"line":708},[303,961,711],{"class":313},[303,963,964],{"class":317},")",[303,966,418],{"class":313},[303,968,969,972,974],{"class":305,"line":716},[303,970,971],{"class":371},"      indexes",[303,973,375],{"class":313},[303,975,976],{"class":317}," [\n",[303,978,979],{"class":305,"line":723},[303,980,981],{"class":398},"        // Single column indexes\n",[303,983,984,987,990,992,995,997,1000,1002,1005],{"class":305,"line":728},[303,985,986],{"class":313},"        {",[303,988,989],{"class":371}," columns",[303,991,375],{"class":313},[303,993,994],{"class":317}," [",[303,996,415],{"class":313},[303,998,999],{"class":336},"category",[303,1001,415],{"class":313},[303,1003,1004],{"class":317},"] ",[303,1006,1007],{"class":313},"},\n",[303,1009,1011,1013,1015,1017,1019,1021,1024,1026,1028],{"class":305,"line":1010},18,[303,1012,986],{"class":313},[303,1014,989],{"class":371},[303,1016,375],{"class":313},[303,1018,994],{"class":317},[303,1020,415],{"class":313},[303,1022,1023],{"class":336},"price",[303,1025,415],{"class":313},[303,1027,1004],{"class":317},[303,1029,1007],{"class":313},[303,1031,1033],{"class":305,"line":1032},19,[303,1034,347],{"emptyLinePlaceholder":346},[303,1036,1038],{"class":305,"line":1037},20,[303,1039,1040],{"class":398},"        // Composite index for category + price filtering\n",[303,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068],{"class":305,"line":1043},21,[303,1045,986],{"class":313},[303,1047,989],{"class":371},[303,1049,375],{"class":313},[303,1051,994],{"class":317},[303,1053,415],{"class":313},[303,1055,999],{"class":336},[303,1057,415],{"class":313},[303,1059,321],{"class":313},[303,1061,333],{"class":313},[303,1063,1023],{"class":336},[303,1065,415],{"class":313},[303,1067,1004],{"class":317},[303,1069,1007],{"class":313},[303,1071,1073],{"class":305,"line":1072},22,[303,1074,347],{"emptyLinePlaceholder":346},[303,1076,1078],{"class":305,"line":1077},23,[303,1079,1080],{"class":398},"        // Unique index to ensure SKU uniqueness\n",[303,1082,1084,1086,1088,1090,1092,1094,1097,1099,1102,1104,1107,1109,1113],{"class":305,"line":1083},24,[303,1085,986],{"class":313},[303,1087,989],{"class":371},[303,1089,375],{"class":313},[303,1091,994],{"class":317},[303,1093,415],{"class":313},[303,1095,1096],{"class":336},"sku",[303,1098,415],{"class":313},[303,1100,1101],{"class":317},"]",[303,1103,321],{"class":313},[303,1105,1106],{"class":371}," unique",[303,1108,375],{"class":313},[303,1110,1112],{"class":1111},"sfNiH"," true",[303,1114,1115],{"class":313}," },\n",[303,1117,1119],{"class":305,"line":1118},25,[303,1120,347],{"emptyLinePlaceholder":346},[303,1122,1124],{"class":305,"line":1123},26,[303,1125,1126],{"class":398},"        // Custom index name (optional)\n",[303,1128,1130,1132,1134,1136,1138,1140,1143,1145,1147,1149,1151,1153,1155,1157,1160,1162,1164,1167,1169],{"class":305,"line":1129},27,[303,1131,986],{"class":313},[303,1133,989],{"class":371},[303,1135,375],{"class":313},[303,1137,994],{"class":317},[303,1139,415],{"class":313},[303,1141,1142],{"class":336},"inStock",[303,1144,415],{"class":313},[303,1146,321],{"class":313},[303,1148,333],{"class":313},[303,1150,999],{"class":336},[303,1152,415],{"class":313},[303,1154,1101],{"class":317},[303,1156,321],{"class":313},[303,1158,1159],{"class":371}," name",[303,1161,375],{"class":313},[303,1163,333],{"class":313},[303,1165,1166],{"class":336},"idx_stock_category",[303,1168,415],{"class":313},[303,1170,1115],{"class":313},[303,1172,1174,1177],{"class":305,"line":1173},28,[303,1175,1176],{"class":317},"      ]",[303,1178,418],{"class":313},[303,1180,1182,1184,1186],{"class":305,"line":1181},29,[303,1183,447],{"class":313},[303,1185,964],{"class":317},[303,1187,418],{"class":313},[303,1189,1191],{"class":305,"line":1190},30,[303,1192,1193],{"class":313},"  },\n",[303,1195,1197,1199],{"class":305,"line":1196},31,[303,1198,462],{"class":313},[303,1200,450],{"class":317},[734,1202,1203],{},"Indexes are created automatically when the database schema is generated. They work across all supported databases: SQLite, Cloudflare D1, PostgreSQL, LibSQL, and PGlite.",[750,1205,1207,1210,1211,1214],{"icon":1206},"i-ph-lightbulb",[252,1208,1209],{},"Cloudflare D1 Cost Optimization",": With indexes, a ",[216,1212,1213],{},"WHERE"," clause on an indexed column counts as only 1 row read when there's a single match. Without an index, D1 counts all rows scanned in the table, significantly increasing your read costs. Indexes can dramatically reduce your D1 billing.",[212,1216,1217],{},[252,1218,1219],{},"Index Configuration Options:",[246,1221,1222,1230,1245],{},[249,1223,1224,1229],{},[252,1225,1226],{},[216,1227,1228],{},"columns"," (required): Array of column names to include in the index",[249,1231,1232,1237,1238,1241,1242,964],{},[252,1233,1234],{},[216,1235,1236],{},"unique"," (optional): Set to ",[216,1239,1240],{},"true"," to create a unique index (default: ",[216,1243,1244],{},"false",[249,1246,1247,1252,1253],{},[252,1248,1249],{},[216,1250,1251],{},"name"," (optional): Custom index name. If omitted, auto-generates as ",[216,1254,1255],{},"idx_{collection}_{column1}_{column2}",[212,1257,1258],{},[252,1259,1260],{},"Performance Tips:",[246,1262,1263,1270,1276,1279],{},[249,1264,1265,1266,1269],{},"Index columns used in ",[216,1267,1268],{},"where()"," queries for faster filtering",[249,1271,1265,1272,1275],{},[216,1273,1274],{},"sort()"," for optimized sorting",[249,1277,1278],{},"Use composite indexes for queries that filter/sort by multiple columns",[249,1280,1281],{},"Unique indexes automatically enforce data uniqueness constraints",[235,1283,1285],{"id":1284},"querying-collections","Querying Collections",[212,1287,1288,1289,1293],{},"Use the ",[478,1290,1291],{"href":81},[216,1292,80],{}," util to fetch one or all items from a collection:",[294,1295,1300],{"className":1296,"code":1297,"filename":1298,"language":1299,"meta":299,"style":299},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { data: posts } = await useAsyncData('blog', () => queryCollection('blog').all())\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Ch1>Blog\u003C/h1>\n    \u003Cul>\n      \u003Cli v-for=\"post in posts\" :key=\"post.id\">\n        \u003CNuxtLink :to=\"post.path\">{{ post.title }}\u003C/NuxtLink>\n      \u003C/li>\n    \u003C/ul>\n  \u003C/div>\n\u003C/template>\n","pages/blog.vue","vue",[216,1301,1302,1330,1394,1403,1407,1416,1426,1446,1454,1487,1518,1527,1536,1545],{"__ignoreMap":299},[303,1303,1304,1307,1310,1314,1317,1320,1323,1325,1327],{"class":305,"line":306},[303,1305,1306],{"class":313},"\u003C",[303,1308,1309],{"class":371},"script",[303,1311,1313],{"class":1312},"spNyl"," setup",[303,1315,1316],{"class":1312}," lang",[303,1318,1319],{"class":313},"=",[303,1321,1322],{"class":313},"\"",[303,1324,298],{"class":336},[303,1326,1322],{"class":313},[303,1328,1329],{"class":313},">\n",[303,1331,1332,1335,1337,1340,1342,1345,1347,1350,1353,1356,1358,1360,1363,1365,1367,1370,1373,1376,1378,1380,1382,1384,1386,1388,1391],{"class":305,"line":343},[303,1333,1334],{"class":1312},"const",[303,1336,314],{"class":313},[303,1338,1339],{"class":371}," data",[303,1341,375],{"class":313},[303,1343,1344],{"class":317}," posts ",[303,1346,462],{"class":313},[303,1348,1349],{"class":313}," =",[303,1351,1352],{"class":309}," await",[303,1354,1355],{"class":359}," useAsyncData",[303,1357,362],{"class":317},[303,1359,415],{"class":313},[303,1361,1362],{"class":336},"blog",[303,1364,415],{"class":313},[303,1366,321],{"class":313},[303,1368,1369],{"class":313}," ()",[303,1371,1372],{"class":1312}," =>",[303,1374,1375],{"class":359}," queryCollection",[303,1377,362],{"class":317},[303,1379,415],{"class":313},[303,1381,1362],{"class":336},[303,1383,415],{"class":313},[303,1385,964],{"class":317},[303,1387,484],{"class":313},[303,1389,1390],{"class":359},"all",[303,1392,1393],{"class":317},"())\n",[303,1395,1396,1399,1401],{"class":305,"line":350},[303,1397,1398],{"class":313},"\u003C/",[303,1400,1309],{"class":371},[303,1402,1329],{"class":313},[303,1404,1405],{"class":305,"line":368},[303,1406,347],{"emptyLinePlaceholder":346},[303,1408,1409,1411,1414],{"class":305,"line":381},[303,1410,1306],{"class":313},[303,1412,1413],{"class":371},"template",[303,1415,1329],{"class":313},[303,1417,1418,1421,1424],{"class":305,"line":395},[303,1419,1420],{"class":313},"  \u003C",[303,1422,1423],{"class":371},"div",[303,1425,1329],{"class":313},[303,1427,1428,1431,1434,1437,1440,1442,1444],{"class":305,"line":402},[303,1429,1430],{"class":313},"    \u003C",[303,1432,1433],{"class":371},"h1",[303,1435,1436],{"class":313},">",[303,1438,1439],{"class":317},"Blog",[303,1441,1398],{"class":313},[303,1443,1433],{"class":371},[303,1445,1329],{"class":313},[303,1447,1448,1450,1452],{"class":305,"line":421},[303,1449,1430],{"class":313},[303,1451,246],{"class":371},[303,1453,1329],{"class":313},[303,1455,1456,1459,1461,1464,1466,1468,1471,1473,1476,1478,1480,1483,1485],{"class":305,"line":427},[303,1457,1458],{"class":313},"      \u003C",[303,1460,249],{"class":371},[303,1462,1463],{"class":1312}," v-for",[303,1465,1319],{"class":313},[303,1467,1322],{"class":313},[303,1469,1470],{"class":336},"post in posts",[303,1472,1322],{"class":313},[303,1474,1475],{"class":1312}," :key",[303,1477,1319],{"class":313},[303,1479,1322],{"class":313},[303,1481,1482],{"class":336},"post.id",[303,1484,1322],{"class":313},[303,1486,1329],{"class":313},[303,1488,1489,1492,1495,1498,1500,1502,1505,1507,1509,1512,1514,1516],{"class":305,"line":444},[303,1490,1491],{"class":313},"        \u003C",[303,1493,1494],{"class":371},"NuxtLink",[303,1496,1497],{"class":1312}," :to",[303,1499,1319],{"class":313},[303,1501,1322],{"class":313},[303,1503,1504],{"class":336},"post.path",[303,1506,1322],{"class":313},[303,1508,1436],{"class":313},[303,1510,1511],{"class":317},"{{ post.title }}",[303,1513,1398],{"class":313},[303,1515,1494],{"class":371},[303,1517,1329],{"class":313},[303,1519,1520,1523,1525],{"class":305,"line":453},[303,1521,1522],{"class":313},"      \u003C/",[303,1524,249],{"class":371},[303,1526,1329],{"class":313},[303,1528,1529,1532,1534],{"class":305,"line":459},[303,1530,1531],{"class":313},"    \u003C/",[303,1533,246],{"class":371},[303,1535,1329],{"class":313},[303,1537,1538,1541,1543],{"class":305,"line":690},[303,1539,1540],{"class":313},"  \u003C/",[303,1542,1423],{"class":371},[303,1544,1329],{"class":313},[303,1546,1547,1549,1551],{"class":305,"line":708},[303,1548,1398],{"class":313},[303,1550,1413],{"class":371},[303,1552,1329],{"class":313},[734,1554,1555,1556,1559],{"to":81},"Learn more about the available query options in our ",[216,1557,1558],{},"queryCollections"," API documentation.",[235,1561,1563],{"id":1562},"definecollection","defineCollection()",[212,1565,1566,1567,1570],{},"The ",[216,1568,1569],{},"defineCollection"," function defines a collection in your content configuration. Here's its TypeScript signature:",[294,1572,1574],{"className":296,"code":1573,"language":298,"meta":299,"style":299},"function defineCollection(collection: Collection): DefinedCollection\n\ntype Collection = {\n  // Determines how content is processed\n  type: 'page' | 'data'\n  // Specifies content location\n  source?: string | CollectionSource\n  // Zod schema for content validation and typing\n  schema?: ZodObject\u003CT>\n  // Database indexes for query optimization\n  indexes?: CollectionIndex[]\n}\n\ntype CollectionIndex = {\n  // Column names to include in the index\n  columns: string[]\n  // Optional custom index name\n  name?: string\n  // Whether this is a unique index (default: false)\n  unique?: boolean\n}\n",[216,1575,1576,1601,1605,1616,1621,1643,1648,1664,1669,1686,1691,1704,1709,1713,1723,1728,1739,1744,1754,1759,1769],{"__ignoreMap":299},[303,1577,1578,1581,1583,1585,1589,1591,1595,1598],{"class":305,"line":306},[303,1579,1580],{"class":1312},"function",[303,1582,318],{"class":359},[303,1584,362],{"class":313},[303,1586,1588],{"class":1587},"sHdIc","collection",[303,1590,375],{"class":313},[303,1592,1594],{"class":1593},"sBMFI"," Collection",[303,1596,1597],{"class":313},"):",[303,1599,1600],{"class":1593}," DefinedCollection\n",[303,1602,1603],{"class":305,"line":343},[303,1604,347],{"emptyLinePlaceholder":346},[303,1606,1607,1610,1612,1614],{"class":305,"line":350},[303,1608,1609],{"class":1312},"type",[303,1611,1594],{"class":1593},[303,1613,1349],{"class":313},[303,1615,378],{"class":313},[303,1617,1618],{"class":305,"line":368},[303,1619,1620],{"class":398},"  // Determines how content is processed\n",[303,1622,1623,1626,1628,1630,1632,1634,1637,1639,1641],{"class":305,"line":381},[303,1624,1625],{"class":371},"  type",[303,1627,375],{"class":313},[303,1629,333],{"class":313},[303,1631,412],{"class":336},[303,1633,415],{"class":313},[303,1635,1636],{"class":313}," |",[303,1638,333],{"class":313},[303,1640,852],{"class":336},[303,1642,340],{"class":313},[303,1644,1645],{"class":305,"line":395},[303,1646,1647],{"class":398},"  // Specifies content location\n",[303,1649,1650,1653,1656,1659,1661],{"class":305,"line":402},[303,1651,1652],{"class":371},"  source",[303,1654,1655],{"class":313},"?:",[303,1657,1658],{"class":1593}," string",[303,1660,1636],{"class":313},[303,1662,1663],{"class":1593}," CollectionSource\n",[303,1665,1666],{"class":305,"line":421},[303,1667,1668],{"class":398},"  // Zod schema for content validation and typing\n",[303,1670,1671,1674,1676,1679,1681,1684],{"class":305,"line":427},[303,1672,1673],{"class":371},"  schema",[303,1675,1655],{"class":313},[303,1677,1678],{"class":1593}," ZodObject",[303,1680,1306],{"class":313},[303,1682,1683],{"class":1593},"T",[303,1685,1329],{"class":313},[303,1687,1688],{"class":305,"line":444},[303,1689,1690],{"class":398},"  // Database indexes for query optimization\n",[303,1692,1693,1696,1698,1701],{"class":305,"line":453},[303,1694,1695],{"class":371},"  indexes",[303,1697,1655],{"class":313},[303,1699,1700],{"class":1593}," CollectionIndex",[303,1702,1703],{"class":317},"[]\n",[303,1705,1706],{"class":305,"line":459},[303,1707,1708],{"class":313},"}\n",[303,1710,1711],{"class":305,"line":690},[303,1712,347],{"emptyLinePlaceholder":346},[303,1714,1715,1717,1719,1721],{"class":305,"line":708},[303,1716,1609],{"class":1312},[303,1718,1700],{"class":1593},[303,1720,1349],{"class":313},[303,1722,378],{"class":313},[303,1724,1725],{"class":305,"line":716},[303,1726,1727],{"class":398},"  // Column names to include in the index\n",[303,1729,1730,1733,1735,1737],{"class":305,"line":723},[303,1731,1732],{"class":371},"  columns",[303,1734,375],{"class":313},[303,1736,1658],{"class":1593},[303,1738,1703],{"class":317},[303,1740,1741],{"class":305,"line":728},[303,1742,1743],{"class":398},"  // Optional custom index name\n",[303,1745,1746,1749,1751],{"class":305,"line":1010},[303,1747,1748],{"class":371},"  name",[303,1750,1655],{"class":313},[303,1752,1753],{"class":1593}," string\n",[303,1755,1756],{"class":305,"line":1032},[303,1757,1758],{"class":398},"  // Whether this is a unique index (default: false)\n",[303,1760,1761,1764,1766],{"class":305,"line":1037},[303,1762,1763],{"class":371},"  unique",[303,1765,1655],{"class":313},[303,1767,1768],{"class":1593}," boolean\n",[303,1770,1771],{"class":305,"line":1043},[303,1772,1708],{"class":313},[734,1774,1775],{"to":36},"Learn more about collection types.",[294,1777,1779],{"className":296,"code":1778,"language":298,"meta":299,"style":299},"type CollectionSource = {\n  // Glob pattern for content matching\n  include: string\n  // .path prefix (only applies to 'page' type)\n  prefix?: string\n  // Glob patterns to exclude content\n  exclude?: string[]\n  // Root directory for content matching\n  cwd?: string\n  // Remote git repository URL (e.g., https://github.com/nuxt/content)\n  repository?: string\n  // Authentication token for private repositories (e.g., GitHub personal access token)\n  authToken?: string\n}\n",[216,1780,1781,1792,1797,1806,1811,1820,1825,1836,1841,1850,1855,1864,1869,1878],{"__ignoreMap":299},[303,1782,1783,1785,1788,1790],{"class":305,"line":306},[303,1784,1609],{"class":1312},[303,1786,1787],{"class":1593}," CollectionSource",[303,1789,1349],{"class":313},[303,1791,378],{"class":313},[303,1793,1794],{"class":305,"line":343},[303,1795,1796],{"class":398},"  // Glob pattern for content matching\n",[303,1798,1799,1802,1804],{"class":305,"line":350},[303,1800,1801],{"class":371},"  include",[303,1803,375],{"class":313},[303,1805,1753],{"class":1593},[303,1807,1808],{"class":305,"line":368},[303,1809,1810],{"class":398},"  // .path prefix (only applies to 'page' type)\n",[303,1812,1813,1816,1818],{"class":305,"line":381},[303,1814,1815],{"class":371},"  prefix",[303,1817,1655],{"class":313},[303,1819,1753],{"class":1593},[303,1821,1822],{"class":305,"line":395},[303,1823,1824],{"class":398},"  // Glob patterns to exclude content\n",[303,1826,1827,1830,1832,1834],{"class":305,"line":402},[303,1828,1829],{"class":371},"  exclude",[303,1831,1655],{"class":313},[303,1833,1658],{"class":1593},[303,1835,1703],{"class":317},[303,1837,1838],{"class":305,"line":421},[303,1839,1840],{"class":398},"  // Root directory for content matching\n",[303,1842,1843,1846,1848],{"class":305,"line":427},[303,1844,1845],{"class":371},"  cwd",[303,1847,1655],{"class":313},[303,1849,1753],{"class":1593},[303,1851,1852],{"class":305,"line":444},[303,1853,1854],{"class":398},"  // Remote git repository URL (e.g., https://github.com/nuxt/content)\n",[303,1856,1857,1860,1862],{"class":305,"line":453},[303,1858,1859],{"class":371},"  repository",[303,1861,1655],{"class":313},[303,1863,1753],{"class":1593},[303,1865,1866],{"class":305,"line":459},[303,1867,1868],{"class":398},"  // Authentication token for private repositories (e.g., GitHub personal access token)\n",[303,1870,1871,1874,1876],{"class":305,"line":690},[303,1872,1873],{"class":371},"  authToken",[303,1875,1655],{"class":313},[303,1877,1753],{"class":1593},[303,1879,1880],{"class":305,"line":708},[303,1881,1708],{"class":313},[734,1883,1884],{"to":40},"Learn more about collection sources.",[212,1886,1887],{},"The function returns the defined collection object.",[1889,1890,1891],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":299,"searchDepth":343,"depth":343,"links":1893},[1894,1895,1899,1900],{"id":237,"depth":343,"text":238},{"id":282,"depth":343,"text":283,"children":1896},[1897,1898],{"id":488,"depth":350,"text":489},{"id":755,"depth":350,"text":756},{"id":1284,"depth":343,"text":1285},{"id":1562,"depth":343,"text":1563},"Learn how to define and configure content collections in your Nuxt application.","md",null,{},{"title":31},{"title":207,"description":1901},"n5aWKMuV3rkOAPkpzrvbW9dO3PIX7S-GJxESv-ei4k0",[1909,1911],{"title":20,"path":21,"stem":22,"description":1910,"children":-1},"How to migrate from v2 to v3",{"title":35,"path":36,"stem":37,"description":1912,"children":-1},"Learn about the two types of collections you can define in Nuxt Content.",1774543455315]