开发者

Idiomatic way to store a single, "first-class" list in MongoDB?

I have a special list (a sort of queue, as in the data structure, not as in a work queue) that I want to store in MongoDB. I need to access and manipulate this single list often in my application - and I don't have several of the same type of list.

It would be easiest to store it in a single document, but the problem I'm having is figuring out the best way to reference that particular document from my application code. I don't want to have to query several documents开发者_如何学Go to locate the correct one, since only one document will contain this list.

I'd also rather not split the list into several documents in a collection, since it is just a short, simple list (it is limited to 400 elements, and each element is just a short piece of text, so there is no risk of overrunning the 4MB document limit).

I've thought of several ways I could do this, but none seem ideal. Please let me know if one is the right approach, or if I'm missing something.

  1. Set a custom _id for the document, and hard-code it in my application.
  2. Create a collection for the document which will contain only that one document, so that I can retrieve it by just getting the first document in that collection. (This seems hacky)
  3. Use a field like document_name: 'my_special_list' and retrieve the document by querying on document_name. I'd rather not do this since I have no need for other documents like this, so only one document would have that document_name field.
  4. Use a collection of documents, each containing an index field and an element content field, and use map-reduce to get a list from it, or something along those lines. I'd rather not do this since simply retrieving a BSON list, manipulating it and storing it back in the document is so much more straightforward.
  5. Use a different technology for this, since MongoDB isn't suited for it.


The MongoDB documentation states:

Users are welcome to use their own conventions for creating ids; the _id value may be of any type so long as it is a unique.

So option 1 would be the way I'd do it.

Update

Option 2 is somewhat of a hack, as you said yourself.
Option 3 introduces an additional field for something you can use the _id field for just as well.
Option 4 is a complex solution to a simple problem.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜