MongoDB CRUD Operations with ADO.NET
Master Database Operations and Build Scalable Applications
Take your .NET development skills to the next level by mastering MongoDB CRUD operations within the ADO.NET framework.
222 pages11 chaptersAug 25, 2026MongoDB
About this book
This practical guide walks you through everything you need to know to confidently work with MongoDB in your applications, from basic document operations to advanced querying techniques. You'll learn how to leverage the MongoDB C# driver to create, read, update, and delete documents efficiently, implement proper indexing strategies, and build robust error handling into your data access layer. Whether you're migrating from SQL Server or exploring NoSQL for the first time, this book provides clear examples, real-world scenarios, and best practices that translate directly to production code. Discover how to optimize performance, secure your data, and design schemas that scale with your application's growth.
Table of contents
- IntroductionWhy MongoDB Matters for .NET Developers, How This Book Is Organized, What You Need to Get Started, A Practical, Hands-On ApproachRead below
- Chapter 1: MongoDB Fundamentals for .NET DevelopersUnderstanding the Document Model, Collections, Databases, and Data Organization, BSON: The Data Format Behind MongoDB, Shifting from Relational to Document Thinking
- Chapter 2: Setting Up MongoDB with ADO.NETInstalling MongoDB and the C# Driver, Connection Strings and Configuration, Creating MongoClient and Database Connections, Testing Your Connection and Troubleshooting
- Chapter 3: Create Operations: Inserting DocumentsInserting Single Documents, Bulk Inserting Multiple Documents, Insert Options and Ordered vs. Unordered Operations, Error Handling and Duplicate Key Exceptions
- Chapter 4: Read Operations: Querying DocumentsFinding Documents with Find(), Filtering with Query Operators and Expressions, Projecting Specific Fields, Sorting, Limiting, and Pagination
- Chapter 5: Update Operations: Modifying DocumentsUpdating Single Documents, Updating Multiple Documents, Using Update Operators ($set, $inc, $push, etc.), Upserts and Replace Operations
- Chapter 6: Delete Operations: Removing DocumentsDeleting Single Documents, Deleting Multiple Documents, Soft Deletes vs. Hard Deletes, Handling Cascading Deletes and Data Integrity
- Chapter 7: Advanced Querying with Aggregation PipelinesIntroduction to Aggregation Pipelines, Common Pipeline Stages ($match, $group, $project), Building Complex Aggregations, Optimizing Aggregation Performance
- Chapter 8: Indexing and Performance OptimizationUnderstanding Index Types and When to Use Them, Creating and Managing Indexes Programmatically, Analyzing Query Performance with Explain Plans, Index Strategies for Common Query Patterns
- Chapter 9: Transactions and Data ConsistencyACID Properties in MongoDB, Using Sessions and Multi-Document Transactions, Common Transaction Patterns and Use Cases, Read Preferences and Write Concerns
- Chapter 10: Security, Validation, and Best PracticesAuthentication and Authorization, Schema Validation and Data Integrity, Preventing Injection Attacks, Security Best Practices Checklist
- Chapter 11: Testing MongoDB OperationsUnit Testing with Mocks and Fakes, Integration Testing with Real MongoDB Instances, Managing Test Data and Fixtures
- ConclusionRecap of Key Concepts, Your Next Steps Forward
- Appendix: Quick Reference GuideCommon CRUD Operations Reference, MongoDB Query Operators Quick Reference
Introduction
A ticketing platform built on SQL Server starts to buckle when a marketing campaign triggers ten thousand new sign-ups in an hour. The schema, tuned for years around fixed columns and predictable joins, suddenly needs to store wildly different attributes for each event type: concerts want seat maps, workshops want capacity limits, webinars want stream URLs. The team spends a weekend adding nullable columns and a sprawling junction table just to keep up. That scenario, or something close to it, is what pushes many .NET teams toward MongoDB. Not because relational databases are broken, but because some problems fit a different shape of storage better.
MongoDB stores data as documents, flexible, self-contained records that can nest related information inside themselves rather than scattering it across tables. For a .NET developer who has spent years writing SELECT statements and designing normalized schemas, this is a genuine shift in thinking, not just a new library to import. The good news is that the underlying skills transfer. Filtering, sorting, updating, and deleting records are still the daily bread and butter of application development. What changes is the vocabulary, the structure of the data, and some of the tools used to reach it.
This book exists to make that shift concrete and practical for developers who already know their way around ADO.NET and relational thinking. Rather than treating MongoDB as an abstract concept, it walks through the actual C# driver code, the actual connection setup, and the actual patterns used in production applications. Every operation gets tied back to something familiar: an insert here, a filtered query there, an update that mirrors what a SQL UPDATE statement would do, but expressed through documents and operators instead of columns and clauses.
The chapters ahead move in a deliberate order, starting with the conceptual foundation and ending with testing strategies for production code. Each one builds on the last, so a developer working straight through will end up with a working mental model plus a stack of reusable code patterns. Someone who already has MongoDB experience can jump to a specific chapter, since each is written to stand reasonably well on its own once the fundamentals from the early chapters are in place.
What follows in this introduction sets expectations before the technical material begins. It explains why MongoDB deserves a place in the .NET toolkit, how the book is structured chapter by chapter, what setup is needed before writing any code, and how the hands-on philosophy of the book will shape the examples throughout.
Why MongoDB Matters for .NET Developers
Relational databases were designed in an era when storage was expensive and data models changed slowly. Edgar Codd's relational model, published in 1970, organized information into tables with fixed columns precisely because that structure made storage efficient and queries predictable[1]. That design still serves many applications extremely well, particularly ones with stable, well-understood data shapes like financial ledgers or inventory systems. But modern applications often deal with data that does not sit still: user-generated content, event logs, product catalogs with wildly different attributes per category, and API responses that evolve release after release.
MongoDB was built around a different assumption: that the shape of data will change, and the database should not fight that change. A document database lets each record carry its own structure, so a product document for a book can include an author and page count while a product document for a laptop includes a processor and screen size, all inside the same collection. There is no need to add nullable columns for attributes that only apply to some records. This is not a workaround, it is the intended design, and it removes a category of migration pain that relational teams deal with constantly.
For .NET developers specifically, the practical appeal comes from how naturally documents map onto objects. A C# class with nested properties, lists, and optional fields serializes almost directly into a MongoDB document, without the object-relational mapping gymnastics that tools like Entity Framework sometimes require to flatten an object graph into normalized tables. A Customer class with an embedded list of Address objects can be saved as a single document with an embedded document array, read back, and deserialized into the same class shape, all with far less mapping code than a join-based relational equivalent would need.
Consider a content management system storing articles. In a relational design, an article might need separate tables for tags, comments, and author metadata, tied together with foreign keys and joined at read time. In MongoDB, a single article document can embed its tags as an array, its comments as a nested array of embedded documents, and its author details as a nested object, all retrievable in one query. This does not mean joins disappear entirely (MongoDB supports them through $lookup, covered later), but it does mean many everyday reads become simpler and faster because the related data already lives together.
Performance is another reason MongoDB shows up in .NET stacks handling high write volumes or rapidly scaling read traffic. Because documents are self-contained, MongoDB can distribute them across multiple servers (a process called sharding) more naturally than a relational schema with many interdependent tables. Companies running large-scale consumer applications, from e-commerce catalogs to social platforms, often reach for this kind of horizontal scaling when a single powerful database server is no longer enough[2]. A .NET developer who understands how to model data for this kind of scaling gains a skill that applies well beyond any single employer or project.
None of this means MongoDB replaces SQL Server or PostgreSQL in every situation. Applications with heavy multi-table transactional logic, strict referential integrity needs, and complex reporting across many normalized tables often remain better served by a relational engine. The realistic picture, and the one this book assumes, is a .NET developer who works across both worlds: relational for some services, document-oriented for others, and sometimes both inside the same application. Knowing when to reach for each is itself a valuable skill, and it starts with understanding MongoDB deeply enough to make that choice with confidence rather than guesswork.
The C# driver deserves specific mention here, because it is the bridge that makes all of this approachable rather than intimidating. Provided officially by MongoDB, the driver exposes a strongly typed API that feels familiar to anyone who has used LINQ or the repository pattern in a .NET project. Methods like InsertOne, Find(), and UpdateOne read almost like plain English, and the driver handles the serialization between C# objects and BSON documents automatically in most cases. This removes a significant chunk of the learning curve that might otherwise come with adopting a new database technology.
There is also a practical career dimension worth naming plainly. Job postings for backend and full-stack .NET roles increasingly list MongoDB or general NoSQL experience as a preferred or required skill, particularly at companies building consumer-facing products, IoT platforms, or content-heavy applications. Developers who only know relational patterns can find themselves at a disadvantage in interviews or system design discussions where document modeling comes up. Learning MongoDB is not just a technical exercise, it is an investment in staying versatile in a job market that no longer assumes SQL is the only serious option.
Beyond the job market, there is a design-thinking benefit that tends to surprise developers once they get comfortable with documents. Modeling data as documents forces a closer look at how data is actually accessed, rather than defaulting to normalization for its own sake. This often leads to cleaner, more intentional schema design even back in relational projects, because the exercise of asking what does this application actually read together most often
is valuable regardless of which database eventually stores the answer. That shift in habit alone justifies the time spent learning the document model properly.
The remaining chapters build on this foundation piece by piece. Fundamentals come first, followed by the mechanics of connecting a .NET application to MongoDB, and then each CRUD operation gets its own dedicated treatment with working code. By the time the aggregation pipeline, indexing, and security chapters arrive, the goal is for none of the underlying document concepts to feel unfamiliar anymore, only the specific syntax and options for each new capability.
How This Book Is Organized
The book follows a logical arc that mirrors how a developer actually learns a new database technology on the job: understand the model, connect to it, then perform operations against it with increasing sophistication. The first chapter lays the conceptual groundwork by explaining the document model, how collections and databases organize data, what BSON is and why it matters, and how to mentally translate relational habits into document thinking. Skipping this chapter, even for developers eager to see code, tends to cause confusion later when update operators or embedded documents behave in ways that only make sense once the underlying model is clear.
The second chapter moves into setup: installing MongoDB itself, adding the C# driver to a .NET project, configuring connection strings, and creating the MongoClient instances that every later chapter depends on. This is deliberately hands-on and includes troubleshooting guidance for the connection issues that commonly trip up newcomers, such as authentication failures or network access restrictions on cloud-hosted MongoDB instances. By the end of that chapter, every reader should have a verified, working connection from a .NET application to a MongoDB database, which becomes the foundation for everything that follows.
Chapters three through six form the core of the book's CRUD coverage, with one chapter dedicated to each operation type: create, read, update, and delete. Each of these chapters starts with the simplest possible version of the operation (inserting one document, finding one document, and so on) before layering in complexity like bulk operations, query operators, update operators, and deletion strategies including soft deletes. This structure means a developer can reference any single chapter later as a standalone guide for that operation type, without needing to re-read the whole book to find the relevant pattern.
Chapter seven shifts from basic CRUD into aggregation pipelines, MongoDB's mechanism for transforming and summarizing data server-side. This is where document databases start to show capabilities that go noticeably beyond simple SQL SELECT statements, letting a developer chain stages like $match, $group, and $project into a single query that would otherwise require multiple round trips or complex application-side logic. Chapter eight follows naturally with indexing and performance, since aggregation pipelines and large collections both benefit enormously from indexes designed around actual query patterns rather than guesswork.
Chapter nine addresses transactions and consistency, a topic that surprises some developers coming from a relational background who assume document databases cannot offer transactional guarantees at all. MongoDB has supported multi-document transactions since version 4.0, and this chapter explains when they are genuinely needed versus when a well-designed document structure makes them unnecessary[3]. Chapter ten then covers security: authentication, role-based access control, schema validation, and how to prevent injection attacks that exploit poorly sanitized queries, a risk that exists in MongoDB just as it does in SQL-based systems.
The eleventh chapter closes out the technical material with testing strategies specific to MongoDB, covering both unit tests that mock the driver's interfaces and integration tests that run against real MongoDB instances. Testing data access code has always required different thinking than testing pure business logic, and MongoDB's async driver methods and document-based assertions bring their own specific patterns worth learning deliberately rather than improvising under deadline pressure. This chapter aims to leave readers with a testing approach they can carry directly into a real project's test suite.
After the core chapters, the conclusion revisits the key concepts covered throughout the book and offers concrete suggestions for what to explore next, whether that means diving into sharding for horizontal scale, exploring MongoDB Atlas for managed hosting, or applying these patterns inside a specific framework like ASP.NET Core Web API. The appendix that follows is meant to function as a working reference long after the main reading is done, with quick-lookup tables for common CRUD syntax and query operators, so the book continues to earn a spot on the desk rather than the shelf.
One structural choice worth calling out directly: every chapter includes actual C# code using the official MongoDB driver, not pseudocode or abstracted diagrams. This is intentional, because database concepts that stay theoretical tend to evaporate the moment a developer sits down to write a real feature. Concepts like FilterDefinition or UpdateOne mean far more once seen in a realistic snippet, ideally one resembling code that could plausibly ship in a production application, than they do described only in prose.
The book also builds a loose narrative thread across chapters using a handful of recurring example domains, such as a customer order system and a content publishing platform, rather than inventing a brand-new unrelated example for every single code block. This repetition is deliberate. Watching the same Order document evolve from a simple insert in chapter three, to a filtered query in chapter four, to an aggregation pipeline in chapter seven, reinforces how these operations connect to one another in a real application lifecycle rather than existing as isolated, disconnected exercises.
Finally, later chapters assume familiarity with terms and patterns established earlier, so working through the book roughly in order will produce the smoothest experience for anyone newer to MongoDB. Developers with prior document database exposure, perhaps from another language or framework, may comfortably skip ahead to the ADO.NET-specific chapters, since the conceptual material in chapter one will likely already be familiar territory. Either path is workable, and the chapter structure was designed with both kinds of readers in mind.
What You Need to Get Started
This book assumes a working, intermediate-level familiarity with C# and the .NET ecosystem. That means comfort with classes, interfaces, async and await, LINQ expressions, and dependency injection as it is commonly used in ASP.NET Core applications. None of the code in this book requires advanced or obscure language features, but it does move at a pace that assumes these fundamentals are already solid, since explaining basic C# syntax alongside MongoDB concepts would dilute the focus of every chapter. Developers who feel shaky on async patterns in particular may want to review that topic separately, since the MongoDB C# driver is asynchronous by default for most operations.
A foundational understanding of relational database concepts is also assumed, though not required at an expert level. Knowing what a primary key is, how a WHERE clause filters rows, and roughly how joins connect tables gives a useful reference point for the comparisons drawn throughout the book. This is not a book that teaches databases from zero. It is a book that helps someone who already thinks in tables and rows learn to think in documents and collections instead, so that prior relational knowledge becomes a bridge rather than an obstacle.
On the tooling side, a working installation of the .NET SDK is necessary, ideally a reasonably recent version, since the code examples target modern C# syntax and current versions of the MongoDB C# driver. An editor or IDE capable of running .NET projects is needed as well, whether that is Visual Studio, Visual Studio Code with the C# extension, or JetBrains Rider. None of the examples depend on a specific IDE's features, so any of these choices will work fine for following along with the code.
A running MongoDB instance is obviously required, and there are two realistic paths to get one. The first is installing MongoDB Community Server locally, which is free and works well for learning and local development, though it requires a bit of setup around data directories and service configuration depending on the operating system. The second, often simpler path for beginners, is creating a free-tier cluster on MongoDB Atlas, the official managed cloud service, which avoids local installation entirely and provides a connection string within minutes of signing up. Chapter two walks through both options in detail, so no decision needs to be made before starting to read.
The MongoDB C# driver itself, distributed as a NuGet package, is the other essential piece of software, though it requires no manual installation beyond adding it to a project through the standard NuGet package manager. This driver is maintained directly by MongoDB and receives regular updates aligned with new server features, so keeping it reasonably current is worth doing periodically even outside the scope of this book. Chapter two shows the exact package name and installation command, along with how to verify the installed version matches what the code examples expect.
No prior NoSQL or document database experience is assumed at all. Developers coming to this book with zero exposure to MongoDB, Cassandra, CouchDB, or any similar system will find everything they need starting in chapter one. The only real prerequisite beyond the .NET and relational database familiarity already mentioned is a willingness to unlearn a few habits, since some instincts from years of relational schema design (like reflexively normalizing every relationship into a separate table) need deliberate reconsideration when working with documents.
A basic understanding of JSON syntax is worth having as well, since BSON, the binary format MongoDB uses internally, is closely related to JSON in structure and readable in much the same way once rendered as text. Anyone who has worked with a REST API response, configured a appsettings.json file in ASP.NET Core, or written a JavaScript object literal already has enough JSON familiarity to read MongoDB documents comfortably. Chapter one covers the specific differences between BSON and plain JSON, but the visual shape, curly braces, key-value pairs, and nested structures, will already feel familiar to anyone with that background.
It helps, though it is not strictly required, to have an existing .NET project or application idea in mind while reading, even a small one. Concepts stick far better when they get applied to something with a bit of personal stake, whether that is a hobby project tracking a book collection or a work project migrating a legacy service. Several of the examples throughout the book use a generic order-management and content-publishing scenario, but translating those patterns to a reader's own domain, even just mentally, tends to deepen retention considerably compared to following examples passively.
Command-line comfort is useful but kept to a minimum throughout the book. A few operations, particularly around installing MongoDB locally or running the mongosh shell to verify data outside of C# code, involve typing commands into a terminal. None of this requires advanced scripting knowledge, and every command used is shown explicitly with an explanation of what it does, so even developers who mostly live inside a GUI-based IDE should have no trouble following along.
Lastly, patience with a bit of initial friction is worth mentioning honestly. The first time a connection string refuses to authenticate, or a document fails to deserialize because of a mismatched property name, can feel frustrating in the way that any new technology's early hiccups tend to feel. Chapter two specifically addresses common connection troubleshooting, and later chapters address common serialization and query mistakes as they arise, precisely because these early stumbles are normal and expected, not a sign that something is fundamentally wrong with the approach being taken.
A Practical, Hands-On Approach
Every technical concept in this book gets paired with runnable C# code rather than abstract description alone. When a chapter introduces FilterDefinition for building queries, for example, it does not stop at explaining what a filter definition is in the abstract. It shows a builder expression filtering customer documents by country and order total, then explains each piece of that expression so the pattern can be adapted directly to a different collection or condition. This mirrors how developers actually learn on the job: by seeing a working example, understanding why it works, and then modifying it to fit a new situation.
Real-world scenarios anchor most examples rather than toy data with no context. Instead of inserting documents shaped like { a: 1, b: 2 }, the examples use recognizable domain objects: customers with addresses, orders with line items, articles with tags and comments. This choice is deliberate, because production code never looks like minimal toy examples, and developers benefit from seeing how MongoDB patterns hold up against data structures with genuine nesting and realistic field names. A reader building an e-commerce backend, a content platform, or an internal admin tool should be able to lift these patterns with only minor renaming.
The book also treats mistakes and edge cases as first-class content rather than an afterthought. Chapter three, for instance, dedicates space specifically to duplicate key exceptions and how ordered versus unordered bulk inserts behave differently when one document in a batch fails. This reflects how database work actually unfolds in practice, where the exception messages and edge cases often teach more than the successful path does. Anticipating these moments in advance, rather than discovering them cold during a production incident, is one of the clearest ways this book aims to save time down the line.
Performance considerations appear throughout rather than being isolated only to the indexing chapter. When chapter four introduces projections for shaping query results, it explains not just the syntax for including or excluding fields but why fetching only needed fields reduces network payload and memory pressure, particularly for documents with large embedded arrays. This weaving of performance thinking into every operation, instead of treating it as a separate advanced topic, reflects how experienced developers actually approach database work: efficiency is a habit built into every query, not a separate optimization pass applied later.
Security likewise threads through the book rather than sitting only in chapter ten. Early insert and update examples already demonstrate basic input validation habits, and the read chapter flags how building filters from unsanitized user input can open the door to NoSQL injection long before the dedicated security chapter formally names and addresses that risk. This approach mirrors good engineering practice generally: security is not a feature bolted on near the end of a project, it is a mindset applied from the very first line of data access code.
Where relevant, the book draws direct comparisons to equivalent SQL patterns, since translating a known concept into a new context is often the fastest way to build fluency. An update chapter example showing UpdateOne with the $inc operator, for instance, gets briefly compared to a SQL UPDATE ... SET quantity = quantity + 1 statement, making the mapping between the two worlds explicit rather than left for the reader to infer. These comparisons are kept brief and are not the centerpiece of any chapter, but they serve as helpful checkpoints for developers translating existing SQL Server experience into MongoDB terms.
Each CRUD chapter builds toward a small, cohesive piece of a repository-pattern class, following a structure familiar to any .NET developer who has built a data access layer before. Rather than presenting each method in isolation, the examples accumulate into something resembling a real OrderRepository or ArticleRepository class, complete with constructor injection of an IMongoCollection, so the individual operations covered chapter by chapter connect into a structure that could plausibly be dropped into an actual ASP.NET Core project. This choice reflects the book's underlying goal: not just teaching isolated syntax, but demonstrating how that syntax fits into the architecture patterns .NET developers already use daily.
The testing chapter extends this same hands-on philosophy to an area developers sometimes skip when learning a new database technology. Rather than treating tests as optional polish, chapter eleven shows how to mock IMongoCollection for fast unit tests and how to spin up integration tests against a real MongoDB instance for higher-confidence verification. Both approaches get concrete code, because a CRUD operation that works in a manual demo but has no test coverage is not yet production-ready by most professional standards, and this book aims to model that standard throughout.
Where a concept has genuine trade-offs rather than one clearly correct answer, the book says so plainly instead of pretending otherwise. The choice between embedding related data inside a document versus referencing it in a separate collection, for example, depends heavily on how that data gets queried and how large it might grow, and chapter one walks through concrete scenarios illustrating both directions rather than declaring one universally superior. This honesty about trade-offs is meant to build genuine judgment, not just memorized rules, since real projects constantly present exactly these kinds of decisions with no single textbook answer.
By the time the appendix arrives, the goal is for the code patterns throughout this book to feel less like material that was studied and more like a set of tools already used in practice. That comes only from combining explanation with repetition across realistic examples, which is why the chapters ahead favor working code, recurring domain examples, and honest treatment of trade-offs over abstract description. The next chapter starts exactly where this practical approach demands: with the document model itself, examined closely enough that every later operation makes intuitive sense rather than feeling like memorized syntax.
This is the end of the free sample. The full book has 11 chapters.
Want this book written for you?
Tell us your goals and background, and get your own version of this book, tailored by AI to you.
Benefits of AI-tailored books
- Read one book, not ten:
- all the MongoDB knowledge you need, gathered into a single book.
- Save days of learning:
- tell us your goals, choose your topics, and the whole book is built around them.
- Learn effortlessly:
- MongoDB book written for your specific background and expertise.
- Understand at a glance:
- includes charts, tables, timelines, checklists, decision trees, and more.
- Stay current:
- written the day you order it, not years ago.
- Trust what you read:
- every book is checked for accuracy, with real research when your subject needs it.
Create your unique book in 3 steps
- 1. Select your focus
Select the focus of your MongoDB book and share your background
- 2. Personalize your book
Specify your goals and choose sub-topics to include
- 3. Get your tailored book
Your book is ready in 10 minutes. Read it online, download as EPUB or PDF, or send to Kindle.
Frequently asked questions
- What is TailoredRead?
TailoredRead creates complete, full-length nonfiction ebooks, written specifically for you. Tell us what you want to learn and why, and TailoredRead writes you a complete ebook on it, with charts, tables, and diagrams throughout. Read it online, on Kindle, or on any e-reader, or download it as a PDF or EPUB. Every book is written fresh the day you order it.
- How is the book tailored to me?
Before anything is written, you answer a few short questions about your goals, your background, and the topics you care about. Your book is then planned around your answers: written at your level, focused on your goals, and covering the topics you chose, instead of the one-size-fits-all book a store sells everyone.
- Will it read like generic AI content?
No. Your book isn't a chat transcript: it's planned chapter by chapter before a single word is written, told in a clear book voice, and explains ideas visually with charts, tables, and diagrams. After writing, every book goes through an editorial pass that polishes chapters so the book reads consistent from start to finish. Judge for yourself: browse thousands of sample books on our Explore Books page.
- How accurate is the content?
Our AI first checks whether your subject needs live research. Niche and fast-moving subjects are researched before writing, and the book plan and chapters are grounded in what it finds. After writing, every book goes through a quality pass that checks its facts and consistency, and researched books list their sources in a Notes section at the back.
- How long is the book?
You choose the length: Comprehensive (250-300 pages), Detailed (150-200 pages), Essential (70-100 pages), or Short (30-50 pages).
- Does the book include visuals?
Yes. Every book includes charts, tables, and diagrams: timelines, checklists, step-by-step guides, decision trees, comparison tables, matrices, and bar charts. A typical book includes dozens of these visual elements.
- Can I read it on Kindle? What formats can I download?
Yes. Every book can be read in our online reader or downloaded as a PDF or EPUB. The EPUB can be opened with Kindle, Apple Books, Kobo, and any e-reader. The Commercial and Author licenses also include an editable Word (DOCX) and Markdown download.
- How much does it cost?
About the price of a regular ebook. The exact price depends on your book's length and complexity, from $2 for the shortest books to $35 for the most comprehensive, and it's shown when you review your book, before you commit to anything. Each book is a one-time purchase, yours to keep, no subscription. Licenses that let you share, teach, or publish your book range from $35.99 to $49.99.
- Can I preview the book before purchasing?
Before you pay, you'll see what your book will cover: the title, a detailed description, the estimated length, and the complete chapter-by-chapter table of contents, so you know what you're getting before you decide. The full text itself is written after you purchase.
- How long does it take to create a book?
About 10 minutes. You can start reading the opening chapters while the rest is still being written.


