Node.js MongoDB基于值数组查找文档
我有一个名为“games”的收藏,其文档存储游戏所有者的IDNode.js MongoDB基于值数组查找文档,node.js,mongodb,database,Node.js,Mongodb,Database,我有一个名为“games”的收藏,其文档存储游戏所有者的ID { "owner" : "88878b6c25c167d" } { "owner" : "88878b6c25c167d" } { "owner" : "af565f77f73469b" } 然后我有另一个集合叫做“用户” 因此,我做的第一个查询检索所有游戏的所有者,并将这些值存储在一个数组中。 我要执行的第二个查询应该检索具有相应ID的用户的文档。以前我使用过这个查询: db.users.find({'id
{
"owner" : "88878b6c25c167d"
}
{
"owner" : "88878b6c25c167d"
}
{
"owner" : "af565f77f73469b"
}
然后我有另一个集合叫做“用户”
因此,我做的第一个查询检索所有游戏的所有者,并将这些值存储在一个数组中。
我要执行的第二个查询应该检索具有相应ID的用户的文档。以前我使用过这个查询:
db.users.find({'id':
{'$in': [
'88878b6c25c167d',
'88878b6c25c167d',
'af565f77f73469b'
]}})
问题在于:如果用户被列出两次,它不会返回重复的文档,如上所述。相反,我只得到一个。这破坏了我的申请。我如何确保每个所有者都返回一个文档?MongoDB工作得非常好——它会找到数组中包含其id-s
的所有用户
不知道您需要的更广泛的背景(也许告诉我们您想要实现什么——不是什么错?),但是如果您想在游戏
和用户
之间建立关联,类似的事情可能是合适的:
检索游戏集合后;只需创建一个辅助哈希映射(普通JS对象),对于给定的所有者id
,该映射将返回其游戏的数组
检索有关所有者用户的信息
如果您想知道哪些游戏属于特定的用户
,只需将她的id
从1传递给数据结构即可。并通过游戏获得阵列
这就是你要找的吗?您需要1方面的帮助吗?保留该列表,然后通过查找操作浏览生成的文档,然后进行关联。听起来应用程序已损坏。@Kamsky:您认为应用程序为何已损坏?@wiredparie:所以在Mongo中无法执行此操作?返回重复的文档?不。我当然不希望它这样。谢谢,我已经通过一些服务器端JS代码解决了这个问题。我本希望能够通过查询来完成我的任务,但这种解决方法是合适的。
db.users.find({'id':
{'$in': [
'88878b6c25c167d',
'88878b6c25c167d',
'af565f77f73469b'
]}})