Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB基于值数组查找文档_Node.js_Mongodb_Database - Fatal编程技术网

Node.js MongoDB基于值数组查找文档

Node.js MongoDB基于值数组查找文档,node.js,mongodb,database,Node.js,Mongodb,Database,我有一个名为“games”的收藏,其文档存储游戏所有者的ID { "owner" : "88878b6c25c167d" } { "owner" : "88878b6c25c167d" } { "owner" : "af565f77f73469b" } 然后我有另一个集合叫做“用户” 因此,我做的第一个查询检索所有游戏的所有者,并将这些值存储在一个数组中。 我要执行的第二个查询应该检索具有相应ID的用户的文档。以前我使用过这个查询: db.users.find({'id

我有一个名为“games”的收藏,其文档存储游戏所有者的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'
        ]}})