Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best way to store a single independent document in mongodb

I have MERN application, I have a bunch of collections in my db, now i want to store an object that represents an order:

Say i have "item1, item2, item3" in an "items" collection, each one can be anything really;

I just need the Id's (to reference them), I want the user to choose their order so that i know the correct way of displaying the items (Not the order in the db, an order for a seprate purpose) I think the best way of doing it is having a single document, with the order data in it, but each document should be in a collection, so the question is, is it right to create a collection only to store a single document in it? or is there a better way?

This is an example of the document i want to store: (The array index is their order)

{
    items: [{itemId:xxx, otherprops...}, {itemId: yyy, otherprops...}]
}

The items collection can have 100s of items, so changing the order in that collection is not the correct option for my needs.

like image 343
TheNormalPerson Avatar asked Sep 12 '25 13:09

TheNormalPerson


1 Answers

is it right to create a collection only to store a single document in it

If you look at the admin database in mongodb, you'll see that it does something similar to what I think you're trying to do. There's a system.version collection. In that collection, I've seen documents that contain settings-like information. For example, the featureCompatibility property is actually stored as a document with _id: "featureCompatibility". Shard identity information is also stored as a single document in this collection:

{
  "_id" : "shardIdentity",
  "clusterId" : ObjectId("2bba123c6eeedcd192b19024"),
  "shardName" : "shard2",
  "configsvrConnectionString" : "configDbRepl/alpha.example.net:28100,beta.example.net:28100,charlie.example.net:28100" }

There is only one such document in the system.version collection. You can very well create your own settings collection where you store these bespoke documents. It's certainly not unheard of.

Take a look at the "Shard Aware" section from the official mongodb documentation to see this type of practice in action:

https://docs.mongodb.com/manual/release-notes/3.6-upgrade-sharded-cluster/#prerequisites

like image 130
Tung Avatar answered Sep 15 '25 06:09

Tung