I want to store articles in NoSQL. Each article has a title, summary and sections. Thats no big deal to do. I would also like to tag articles, again easy to do. I also want to store information about tags besides the name, say a definition and an icon. I'm don't want to store the extra tag information each time a tag is used. This leaves me with putting the extra information in a separate collection. So whats the accepted way to go about this in NoSQL? Both storing and retrieving?

For example in SQL I would have a article, tags and a article_tags table and I could do something like SELECT * FROM article_tags INNER JOIN tags on tags.id=article_tags.tag_id WHERE article_tags.art_id=##

You would have to make a separate call - depending on which NoSQL solution you're using. You would have to write your application in such a way that most efficiently leverages the strengths of the NoSQL solution.

I'm most familiar with Redis and Python so in your example I'd probably do something like this structure:

The goal of NoSQL is speed, not necessarily relations, ACID, or removing the potential for update anomalies. This last one is why there is less of an emphasis on normalization and not storing data in multiple locations. However, if you reallyreallyreallyreallyreally wanted to normalize, you could do something like: