【问题标题】:Finding embeded document in mongodb?在 mongodb 中查找嵌入式文档?
【发布时间】:2013-04-19 19:35:30
【问题描述】:

我的收藏是这样的

{
  "name":""
  "type":""
  "arr":[
   {
     "type":""
     "other field"
     ...
   },
  {
     "type":""
     "other field"
     ...
   }
}

我的情况是 输入参数是名称。 所以基于名称我必须获取文档,另外一个条件是数组外部和内部的类型应该匹配.. 需要单独获取这些记录.. 如何做到这一点

【问题讨论】:

  • 我认为您需要为此使用两个查询。
  • 是的。但是没有那个还有什么选择吗?

标签: node.js mongodb


【解决方案1】:

性能不佳,但可以正常工作 (http://docs.mongodb.org/manual/reference/operator/where)

db.SOME_COLLECTION.find({
  name:'SOME_VALUE', 
  $where: 
    function() {
      for(var i = 0; i < obj.arr.length; i++) {
        if(obj.arr[i].type==obj.type) {
          return obj
        }
      }
    }
  }
)

附言聚合框架已经解决了类比问题,但是在这种情况下,恕我直言,只有 $where 子句可用

【讨论】:

  • @khurrum qureshi - 比较 field1 和 field2 中的值的主要问题
【解决方案2】:

如果我理解正确,这就是您获得所需结果的方式

{name:"",type:"",arr.type:""}

您可以输入所需的值,它会返回所有匹配的记录。

【讨论】:

    猜你喜欢
    • 2018-09-24
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2016-07-01
    • 2021-08-07
    • 2018-09-04
    相关资源
    最近更新 更多