【问题标题】:Mongoose and limiting the results of field schema猫鼬和限制字段模式的结果
【发布时间】:2013-01-26 02:11:27
【问题描述】:

我有一个名为“Binders”的集合 在这个集合中,我有一个名为“docs”的字段,它引用了一个“Docs”架构

我想用 findOne() 按 id 拉出一个“Binder”,这没问题。

但我想通过字段比较来限制返回的“文档”

我对猫鼬有些陌生,但如果我的查询是伪的......

Binder.findOne({_id: req.binder._id}, {$where {docs.type = 'type1'}}, function(error, binder) { 

// So this would return my full binder but only the docs where their .type = 'type1'

});

我迷路的地方是基于架构的限制

{$where {docs.type = 'type1'}}

因此,如果我拉出一个活页夹,它有 50 个文档,但没有一个文档属于 type1,我仍然会得到我的活页夹信息,但是“文档”字段中不会有任何文档。

希望这是有道理的。

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    如果我没听错并且docs 是一个数组,那么您可以使用$elemMatch 投影运算符来执行此操作:

    Binder.findOne({_id: req.binder._id}, {docs: {$elemMatch: {type: 'type1'}}}, ...
    

    【讨论】:

    • 嗨 $elemMatch 工作得很好,谢谢!问题我还在项目的另一部分尝试过它,我必须像 docs.users {$elemMatch.... 一样嵌套它,但它说你不能在嵌套值上使用 elemMatch...
    • @user324245 我不确定我是否理解...最好将其作为一个单独的问题提出。
    猜你喜欢
    • 2020-06-29
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2015-04-11
    • 2023-04-07
    • 2014-01-27
    相关资源
    最近更新 更多