使用节点js查询mongodb的过滤器

时间:2016-08-26 05:51:28

标签: node.js mongodb

我有两个收集一个是存储_id,标题,选项,结果,反馈的问题,第二个是孩子的孩子我有商店question_id,得分。我已经从问题集中过滤了_id。我不知道我是怎么做的,我们是否有可能为此设置查询。所以下次当我从问题集中找到问题时,它会发送过滤后的问题。意味着只返回与第二个集合子qustion_id不同的问题集合中的问题。

这是我的第一个集合,我有商店问题,_id标题选项结果反馈

        _id:{type:String},
        title:{type:String, required:true},
        options:{type:Array, required:true},
        result:{type:Array, required:true},
        feedback:{type:String}

这是我的第二个集合,我在店里尝试了question_id和得分

    quiz:[
        {
             questionId:{
            type:mongoose.Schema.Types.ObjectId,
            ref: 'Question',
            index: true
                    },
            score:{type:Number},
            time:{type:String}
            }
           ]

这不完全是我创建示例

var query = {}
firstcollection.find($and[{_id:},{secondcollection question_id:}]},function(err, data){

so that filter data means filter _id will store in data.
and I send this data to the frontend

res.send(data);
});

1 个答案:

答案 0 :(得分:0)

主要问题是概念性的,您正在尝试使用mongodb,它是RDBMS样式的文档存储。在社区压力下,Mondo在最新版本中添加了一些最小的连接功能,但它并没有使它成为关系数据库。

没有好的方法来执行此类查询。文档存储背后的想法很简单 - 您确实拥有文档集合并且您只查询此集合,并且只查询此集合。集合之间的所有链接都是“虚拟的”,仅由代码逻辑提供,不受数据库引擎的支持。

所以你可以用mongo做的就是:查询id的第一个集合(使用适当的投影,仅获取id),将答案存储到某个数组,然后使用此数组对其他集合执行第二次查询。