首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回嵌入式doc时基于doc字段和embedded doc字段的结构查询

返回嵌入式doc时基于doc字段和embedded doc字段的结构查询
EN

Stack Overflow用户
提问于 2012-11-15 06:05:18
回答 2查看 36关注 0票数 1

我正在尝试查询一个mongo数据库,以获得一个嵌入的文档。我是基于文档中的字段和嵌入式文档中的字段进行查询的。

下面是一个有几个文档的例子。

doc 1

代码语言:javascript
复制
{
  token: 'foo'
  services: [
  {
    service: 'one',
    data: {...}
  },
  {
    service: 'two',
    data: {...}
  }
  ]
}

doc 2

代码语言:javascript
复制
{
  token: 'bar'
  services: [
  {
    service: 'one',
    data: {...}
  },
  {
    service: 'two',
    data: {...}
  }
  ]
}

我想从第一个文档中获取{service: 'one', data: {...}}嵌入式文档。但是,我不太确定如何构造查询。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2012-11-15 06:26:02

如果您有这样的集合:

代码语言:javascript
复制
   var coll =  {
      token: 'foo',
      services: [
        {
          service: 'one',
          data: {}
        },
        {
          service: 'two',
          data: {}
        }
      ]
    }

可以使用:service: 'one'查询访问coll.services[0]对象。

更新的如果要按字段选择对象,可以尝试如下:

代码语言:javascript
复制
$.grep(coll.services, function(e) { return e.service == 'one' });
票数 0
EN

Stack Overflow用户

发布于 2012-11-15 09:43:47

如果doc 1和doc 2表示同一个集合中的两个文档,则需要通过一些明确的标识符(如id或name等)获取第一个文档,然后从代码中读取服务数组的第一个元素。

如果doc 1和doc 2是查询的结果,并且需要筛选匹配{service:'one‘、data:{.}}的文档,那么因为服务是数组,所以需要使用$elemMatch。

代码语言:javascript
复制
coll.find( { services : { $elemMatch : { service : "one", data: { ... } } } } )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13392348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档