{"id":1068,"date":"2017-10-09T05:07:34","date_gmt":"2017-10-09T02:07:34","guid":{"rendered":"https:\/\/community.virtono.com\/?p=1068"},"modified":"2020-06-10T16:54:07","modified_gmt":"2020-06-10T13:54:07","slug":"mongodb-and-nosql-databases","status":"publish","type":"post","link":"https:\/\/www.virtono.com\/community\/knowledgebase\/mongodb-and-nosql-databases\/","title":{"rendered":"MongoDB And NoSQL Databases"},"content":{"rendered":"<p><b>Introduction<\/b><\/p>\n<p>MongoDB it is a document-oriented database. It is a free and open-source database. It does not rely on a traditional table-based relational database structure that\u2019s why it is classified as a NoSQL database. Instead it uses JSON-like documents with dynamic schemas. Before you add data to database MongoDB does not require a predefined schema cause it\u2019s not like other relational database.The schema can be altercated at any time<\/p>\n<p>In the following tutorial in one of its part we will use the MongoDB Repository to install the latest version of MongoDB. In part two now we have to start the authentication to secure it on the local system. At the end the final step, we\u2019ll show how to more securely allow remote connection if they\u2019re needed<\/p>\n<p>&nbsp;<\/p>\n<p><strong>MongoDB Overview<\/strong><br \/>\n\u2022 From \u201chumongous\u201d<br \/>\n\u2022 Document-oriented database, not relational<br \/>\n\u2022 Schema free<br \/>\n\u2022 Manages hierarchical collection of BSON (bee-son) documents<br \/>\n\u2022 Written in C++<br \/>\n\u2022 Has an official driver for C# with support from 10gen<br \/>\n\u2022 Scalable with high-performance (scales horizontally)<br \/>\n\u2022 Designed to address today\u2019s workloads<br \/>\n\u2022 BASE rather than ACID compliant<br \/>\n\u2022 Replication<br \/>\n\u2022 Part of the \u201cNoSQL\u201d class of DBMS<br \/>\n\u2022 Website with list of all features &#8211; http:\/\/www.mongodb.org\/<\/p>\n<p><strong>What is NoSQL?<\/strong><br \/>\n\u2022 Class of DBMS that differ from relational model<br \/>\n\u2022 Do not expose the standard SQL interface<br \/>\n\u2022 May not require fixed table schemas, usually<br \/>\navoid join operations, and typically scale horizontally.<br \/>\n\u2022 Term coined by Carlo Strozzi in 1998 to name his lightweight,<br \/>\nopen-source relational database that did not expose the<br \/>\nstandard SQL interface.<br \/>\n\u2022 However as Strozzi said, because the current NoSQL<br \/>\nmovement is departing \u201cfrom the relational model<br \/>\naltogether; it should therefore have been called more<br \/>\nappropriately &#8216;NoREL&#8217;, or something to that effect.\u201c<br \/>\n\u2022 http:\/\/nosql-database.org\/ for examples.<\/p>\n<p><strong>Why are these interesting?<\/strong><br \/>\nNew requirements are arising in environments where we have higher volumes of data with high operation rates, agile development and cloud computing. This reflects the growing interactivity of applications which are becoming more networked and social, driving more requests to the database where high-performance DBMS such as MongoDB become favorable. Not requiring a schema or migration scripts before you add data makes it fit well with agile development approaches. Each time you complete new features, the schema of your database often needs to change. If the database is large, this can mean a slow process.<\/p>\n<p><strong>ACID<\/strong><\/p>\n<p>Relational databases make the ACID promise:<br \/>\n\u2013 Atomicity &#8211; a transaction is all or nothing<br \/>\n\u2013 Consistency &#8211; only valid data is written to the database<br \/>\n\u2013 Isolation &#8211; pretend all transactions are happening serially and the data is correct<br \/>\n\u2013 Durability &#8211; what you write is what you get<br \/>\n\u2022 The problem is ACID can give you too much, it trips you up when you are<br \/>\ntrying to scale a system across multiple nodes.<br \/>\n\u2022 Down time is unacceptable so your system needs to be reliable. Reliability<br \/>\nrequires multiple nodes to handle machine failures.<br \/>\n\u2022 To make scalable systems that can handle lots and lots of reads and writes<br \/>\nyou need many more nodes.<br \/>\n\u2022 Once you try to scale ACID across many machines you hit problems with<br \/>\nnetwork failures and delays. The algorithms don&#8217;t work in a distributed<br \/>\nenvironment at any acceptable speed.<\/p>\n<p><strong>CAP<\/strong><\/p>\n<p>If you can&#8217;t have all of the ACID guarantees it turns out you can have two of the following<br \/>\nthree characteristics:<br \/>\n\u2013 Consistency &#8211; your data is correct all the time. What you write is what you read.<br \/>\n\u2013 Availability &#8211; you can read and write and write your data all the time<br \/>\n\u2013 Partition Tolerance &#8211; if one or more nodes fails the system still works and becomes consistent when<br \/>\nthe system comes on-line.<br \/>\n\u2022 In distributed systems, network partitioning is inevitable and must be tolerated, so essential<br \/>\nCAP means that we cannot have both consistency and 100% availability.<br \/>\n\u201cIf the network is broken, your database won\u2019t work.\u201d<br \/>\n\u2022 However, we do get to pick the definition of \u201cwon\u2019t work\u201d. It can either mean down<br \/>\n(unavailable) or inconsistent (stale data).<\/p>\n<p><strong>BASE<\/strong><br \/>\n\u2022 The types of large systems based on CAP aren&#8217;t ACID, they are BASE (ha ha)<br \/>\n\u2013 Basically Available &#8211; system seems to work all the time<br \/>\n\u2013 Soft State &#8211; it doesn&#8217;t have to be consistent all the time<br \/>\n\u2013 Eventually Consistent &#8211; becomes consistent at some later time<br \/>\n\u2022 Many companies building big applications build them on CAP and BASE: Google, Yahoo,<br \/>\nFacebook, Amazon, eBay, etc.<br \/>\n\u2022 Amazon popularized the concept of \u201cEventual Consistency\u201d. Their definition is:<br \/>\nthe storage system guarantees that if no new updates are made to the object, eventually all<br \/>\naccesses will return the last updated value.<br \/>\n\u2022 A few examples of eventually consistent systems:<br \/>\n\u2013 Asynchronous master\/slave replication on an RDBMS or MongoDB<br \/>\n\u2013 DNS<br \/>\n\u2013 memcached in front of mysql, caching reads<br \/>\nFor more depth and different configuration examples: http:\/\/blog.mongodb.org\/post\/498145601\/on-distributed-consistency-part-2-some-eventual<\/p>\n<p><strong>BSON<\/strong><br \/>\n\u2022 Stands for Binary JSON<br \/>\n\u2022 Is a binary encoded serialisation of JSON-like documents.<br \/>\n\u2022 Like JSON, BSON supports the embedding of documents and<br \/>\narrays within other documents and arrays. BSON also contains<br \/>\nextensions that allow representation of data types that are<br \/>\nnot part of the JSON spec. For example, BSON has a Date type<br \/>\nand a BinData type.<br \/>\n\u2022 The driver performs translation from the language\u2019s \u201cobject\u201d<br \/>\n(ordered associative array) data representation to BSON, and<br \/>\nback:<br \/>\n\u2022 C#: new BsonDocument(&#8220;x&#8221;, 1) Javascript: {x: 1}<\/p>\n<p>&nbsp;<\/p>\n<p><strong>A Many to Many Association<\/strong><br \/>\n\u2022 In a relational DBMS use an intersection table and joins<br \/>\n\u2022 In MongoDB use either embedding or linking<br \/>\nBsonDocument user = new BsonDocument {<br \/>\n{ &#8220;name&#8221;, &#8220;John&#8221; },<br \/>\n{ &#8220;roles&#8221;, new BsonArray{\u201cAdmin\u201d, \u201cUser\u201d, \u201cEngineer\u201d}}<br \/>\n};<br \/>\nusers.Insert(user);<br \/>\n\/\/To get all Engineers<br \/>\nusers.Find(Query.EQ(\u201croles\u201d,\u201dEngineer\u201d));<br \/>\n\u2022 Embedding is the nesting of objects and arrays inside<br \/>\na BSON document. Links are references between<br \/>\ndocuments.<br \/>\n\u2022 There are no joins in MongoDB \u2013 distributed joins would be difficult on a 1,000 server cluster. Embedding is a bit like &#8220;prejoined&#8221; data. Operations within a document are easy for the server to handle; these operations can be fairly rich. Links in contrast must be processed client-side by the application; the application does this by issuing a follow-up query.<br \/>\n\u2022 Generally, for &#8220;contains&#8221; relationships between entities, embedding should be chosen. Use linking when not using linking would result in duplication of data.<\/p>\n<p><strong>Replication through Replica Sets<\/strong><br \/>\n\u2022 Replica sets are a form of asynchronous master\/slave replication, adding automatic failover and automatic recovery of member nodes.<br \/>\n\u2022 A replica set consists of two or more nodes that are copies of each other. (i.e.: replicas)<br \/>\n\u2022 The replica set automatically elects a primary (master). No one member is intrinsically primary; that is, this is a share-nothing design.<br \/>\n\u2022 Drivers (and mongos) can automatically detect when a replica set primary changes and will begin sending writes to the new primary. (Also works with sharding)<br \/>\n\u2022 Replica sets have several common uses (detail in next slide):<br \/>\n\u2013 Data Redundancy<br \/>\n\u2013 Automated Failover \/ High Availability<br \/>\n\u2013 Distributing read load<br \/>\n\u2013 Simplify maintenance (compared to &#8220;normal&#8221; master-slave)<br \/>\n\u2013 Disaster recovery<br \/>\n\u2022 http:\/\/www.mongodb.org\/display\/DOCS\/Replica+Sets<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Why Replica Sets<\/strong><br \/>\n\u2022 Data Redundancy<br \/>\n\u2013 Replica sets provide an automated method for storing multiple copies of your data.<br \/>\n\u2013 Supported drivers allow for the control of &#8220;write concerns&#8221;. This allows for writes to be confirmed by multiple nodes<br \/>\nbefore returning a success message to the client.<br \/>\n\u2022 Automated Failover<br \/>\n\u2013 Replica sets will coordinate to have a single primary in a given set.<br \/>\n\u2013 Supported drivers will recognize the change of a primary within a replica set.<br \/>\n\u2022 In most cases, this means that the failure of a primary can be handled by the client without any configuration changes.<br \/>\n\u2013 A correctly configured replica set basically provides a \u201chot backup\u201d. Recovering from backups is typically very time<br \/>\nconsuming and can result in data loss. Having an active replica set is generally much faster than working with backups.<br \/>\n\u2022 Read Scaling<br \/>\n\u2013 By default, the primary node of a replica set is accessed for all reads and writes.<br \/>\n\u2013 Most drivers provide a slaveOkay method for identifying that a specific operation can be run on a secondary node.<br \/>\nWhen using slaveOkay, a system can share the read load amongst several nodes.<br \/>\n\u2022 Maintenance<br \/>\n\u2013 When performing tasks such as upgrades, backups and compaction, it is typically required to remove a node from<br \/>\nservice.<br \/>\n\u2013 Replica sets allow for these maintenance tasks to be performed while operating a production system. As long as the<br \/>\nproduction system can withstand the removal of a single node, then it\u2019s possible to perform a \u201crolling\u201d upgrade on<br \/>\nsuch things.<br \/>\n\u2022 Disaster Recovery<br \/>\n\u2013 Replica sets allows for a \u201cdelayed secondary\u201d node.<br \/>\n\u2013 This node can provide a window for recovering from disastrous events such as:<br \/>\n\u2022 bad deployments<br \/>\n\u2022 dropped tables and collections<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Horizontal Scalability<\/strong><br \/>\n\u2022 Rather than buying bigger servers, MongoDB scales by adding additional servers &#8211; improvements come in the form of more processors and cores rather than faster processors from packing more CPUs and ram into a server (vertical scaling).<br \/>\n\u2022 MongoDB easily supports high transaction rate applications because as more servers are added, transactions are distributed across the larger cluster of nodes, which linearly increases database capacity. With this model additional capacity can be added without reaching any limits.<br \/>\n\u2022 MongoDB achieves this through auto-sharding<\/p>\n<p><strong>Sharding<\/strong><br \/>\n\u2022 For applications that outgrow the resources of a single database server, MongoDB can convert to a sharded cluster, automatically managing failover and balancing of nodes, with few or no changes to the original application code.<br \/>\n\u2022 Each shard consists of one or more servers and stores data using mongod processes (mongod being the core MongoDB database process). In a production situation, each shard will consist of multiple replicated servers per shard to ensure availability and automated failover. The set of servers\/mongod process within the shard comprise a replica<br \/>\nset.<br \/>\n\u2022 Sharding offers:<br \/>\n\u2013 Automatic balancing for changes in load and data distribution<br \/>\n\u2013 Easy addition of new machines<br \/>\n\u2013 Scaling out to one thousand nodes<br \/>\n\u2013 No single points of failure<br \/>\n\u2013 Automatic failover<br \/>\n\u2022 http:\/\/www.mongodb.org\/display\/DOCS\/Sharding+Introduction<\/p>\n<p><strong>Large MongoDB Deployment example<\/strong><br \/>\n1. One or more shards, each shard holds a portion of the total data (managed automatically). Reads and writes are automatically routed to the appropriate shard(s). Each shard is backed by a replica set \u2013 which just holds the data for that shard. A replica set is one or more servers, each holding copies of the same data. At any given time one is primary and the rest are secondaries. If the primary goes down one of the secondaries takes over automatically as primary. All writes and consistent reads go to the primary, and all eventually consistent reads are distributed amongst all the secondaries.<br \/>\n2. Multiple config servers, each one holds a copy of the meta data indicating which data lives on which shard.<br \/>\n3. One or more routers, each one acts as a server for one or more clients. Clients issue queries\/updates to a router and the router routes them to the appropriate shard<br \/>\nwhile consulting the config servers.<br \/>\n4. One or more clients, each one is (part of) the user&#8217;s application and issues commands to a router via the mongo client library (driver) for its language. mongod is the server program (data or config). mongos is the router program.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction MongoDB it is a document-oriented database. It is a free and open-source database. It does not rely on a traditional table-based relational database structure that\u2019s why it is classified as a NoSQL database. Instead it uses JSON-like documents with dynamic schemas. Before you add data to database MongoDB does<\/p>\n","protected":false},"author":4,"featured_media":1069,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5],"tags":[],"class_list":["post-1068","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb.jpeg?fit=1040%2C560&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7ISfL-he","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1127,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/mongodb\/","url_meta":{"origin":1068,"position":0},"title":"MongoDB","author":"Shreyash Sharma","date":"October 17, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular So far our server has only returned static data: files\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1067,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-install-mongodb-on-ubuntu-16-04\/","url_meta":{"origin":1068,"position":1},"title":"How to Install MongoDB on Ubuntu 16.04","author":"Shreyash Sharma","date":"October 9, 2017","format":false,"excerpt":"Introduction MongoDB it is a document-oriented database. It is a free and open-source database. It does not rely on a traditional table-based relational database structure that\u2019s why it is classified as a NoSQL database. Instead it uses JSON-like documents with dynamic schemas. Before you add data to database MongoDB does\u2026","rel":"","context":"In &quot;Tutorials&quot;","block_context":{"text":"Tutorials","link":"https:\/\/www.virtono.com\/community\/category\/tutorial-how-to\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":965,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-install-mongodb-on-debian-8\/","url_meta":{"origin":1068,"position":2},"title":"How to Install MongoDB on Debian 8","author":"Daniel Draga","date":"June 11, 2017","format":false,"excerpt":"Introduction Part of the MEAN stack MongoDB is the new\u00a0NoSQL document database that is being implemented within modern web applications. So using MongoDB in your own application will give it the edge, you will be able to deal with a large amount of data. On top of all that you\u2026","rel":"","context":"In &quot;Tutorials&quot;","block_context":{"text":"Tutorials","link":"https:\/\/www.virtono.com\/community\/category\/tutorial-how-to\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/06\/mongodb-for-giant-ideas-bbab5c3cf8.png?fit=1024%2C512&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/06\/mongodb-for-giant-ideas-bbab5c3cf8.png?fit=1024%2C512&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/06\/mongodb-for-giant-ideas-bbab5c3cf8.png?fit=1024%2C512&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/06\/mongodb-for-giant-ideas-bbab5c3cf8.png?fit=1024%2C512&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":3687,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-deploy-mongodb-on-kubernetes\/","url_meta":{"origin":1068,"position":3},"title":"How to Deploy MongoDB on Kubernetes","author":"George B.","date":"July 29, 2023","format":false,"excerpt":"This tutorial will walk you through installing MongoDB on Kubernetes cluster. We'll assume that you've already got K3s and Helm set up on your machine. The deployment of applications like MongoDB on Kubernetes cluster is made easier by the Kubernetes package manager Helm. Before getting too technical, it's important to\u2026","rel":"","context":"In &quot;Tutorials&quot;","block_context":{"text":"Tutorials","link":"https:\/\/www.virtono.com\/community\/category\/tutorial-how-to\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2023\/07\/How-to-Deploy-MongoDB-on-Kubernetes.png?fit=360%2C240&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3230,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-install-mongodb-on-ubuntu\/","url_meta":{"origin":1068,"position":4},"title":"How to install MongoDB on Ubuntu","author":"George B.","date":"April 13, 2023","format":false,"excerpt":"Welcome to this comprehensive guide on how to install MongoDB on Ubuntu! In the following steps, you will learn everything you need to know to set up MongoDB on your Ubuntu system. Whether you're a beginner or an experienced user, this guide will walk you through the installation process, providing\u2026","rel":"","context":"In &quot;Tutorials&quot;","block_context":{"text":"Tutorials","link":"https:\/\/www.virtono.com\/community\/category\/tutorial-how-to\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2023\/04\/How-to-install-MongoDB-Ubuntu-22.png?fit=600%2C330&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2023\/04\/How-to-install-MongoDB-Ubuntu-22.png?fit=600%2C330&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2023\/04\/How-to-install-MongoDB-Ubuntu-22.png?fit=600%2C330&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":1105,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/mongoose\/","url_meta":{"origin":1068,"position":5},"title":"Mongoose","author":"Shreyash Sharma","date":"October 12, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular Mongoose\u00a0is a framework which is based on the\u00a0native MongoDB driver\u00a0and\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongoose.png?fit=370%2C200&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/comments?post=1068"}],"version-history":[{"count":1,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1068\/revisions"}],"predecessor-version":[{"id":1070,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1068\/revisions\/1070"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/media\/1069"}],"wp:attachment":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/media?parent=1068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/categories?post=1068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/tags?post=1068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}