如何查询与另一个模型子文档模式的包含匹配的1个模式的子文档

时间:2015-07-14 14:34:00

标签: mean-stack

我正在编写一个定义两(2)个模型的MEAN堆栈应用程序。

var Job = db.model('Job', {
    ...
    kind: {
        baby: false,
        pet: false,
        house: false,
    }
});

var Person = db.model('Person', {
    ...
    kind: {
        baby: false,
        pet: false,
        house: false,
    }
});

我将kind字段创建为子文档,因为存储在此字段中的内容是我的angularjs app中的类型复选框输入。

我的问题与Job的查询有关,Person的类型与true相同。

例如,如果一个人在他们的个人资料中检查了婴儿和宠物,那么我想查询所有有婴儿和宠物的工作是真的。

这是在mongodb中存储来自html表单的复选框输入的方法吗?如果是这样, 什么是查询字符串来实现我的结果。如果没有,那么正确的方法是什么 在mongodb中存储复选框输入?

1 个答案:

答案 0 :(得分:0)

我不知道人员和工作集合中涉及的数据量,也不知道应用程序的查询/主要目标的目的。基于此,这里有一些想法:

  • 提供角度服务以从人员和作业集合中获取数据,并在应用加载后立即存储。每次选中/取消选中复选框时,请使用ng-change和服务数据上的自定义角度过滤器来实现您的目的,而不是不断查询数据库;
  • 如果您确实需要/需要在每次选中/取消选中复选框时查询数据库,那么您可以使用复选框值向服务器发送请求(类似{baby: false, pet: false, house: false} req.body })。收到请求后,只需照常查询并返回匹配的文档:

    var Job = mongoose.model('Job');
    Job.find({kind: req.body}, function (err, docs) {
        if(err) {
            // handle err
        }
        res.json(docs);
    });
    

希望有所帮助,但我不能更具体。