【发布时间】:2017-07-01 17:52:54
【问题描述】:
我正在尝试学习如何使用 MongoDB,但我真的很困惑如何做到这一点。我拥有的是两个集合,一个具有多个用户,另一个集合具有多个项目。例如:
用户:
{
"_id" : ObjectId("56dba03438e1a255b97e82b6"),
"name" : "john",
"age" : 25
}
项目:
{
"_id" : ObjectId("56dba0db38e1a255b97e82b7"),
"name" : "pencil"
}
现在我想在我的应用中做的是允许用户选择一个项目,但多个用户可以选择同一个项目。所以我需要跟踪哪些用户点击了哪些项目。我考虑过使用另一个跟踪用户 ID 和项目 ID 的集合来执行此操作(用户只能选择一次项目)。这是正确的方法吗?我创建了这个集合:
用户项目:
{
"_id" : ObjectId("56dba0db38e1a255b97e82b7"),
"userid" : "56db9fb038e1a255b97e82b5",
"itemid" : "56dba03438e1a255b97e82b6"
}
如果这是正确的方法,那么我希望能够在我的应用程序中单击一个项目,并让它显示选择该项目的所有用户的列表。我怎样才能做到这一点?我只显示在应用程序上选择 itemid = itemid 的 useritems 集合文档......但是现在我将如何根据 useritems 集合中的用户显示用户集合中的所有用户?
router.get('/userlist/:id', function(req, res) {
var db = req.db;
var collection = db.get('useritems');
collection.find({'itemid' : '_id'},{},function(e,docs){
res.json(docs);
});
});
感谢您的帮助,我真的很难理解这是如何工作的。
【问题讨论】:
-
您说您正在努力学习,但您实际上所做的只是尝试将“关系”数据库的原理应用于非关系的存储引擎设计。这不是关于相同的设计或使用模式,否则就不需要不同的解决方案。 NoSQL 空间是关于以不同的方式设计一种用法,而不是将关系模式映射到它。您需要以不同的方式处理此问题,否则只需使用关系引擎即可。
标签: javascript node.js mongodb nosql