我正在尝试查询一个mongo数据库,以获得一个嵌入的文档。我是基于文档中的字段和嵌入式文档中的字段进行查询的。
下面是一个有几个文档的例子。
doc 1
{
token: 'foo'
services: [
{
service: 'one',
data: {...}
},
{
service: 'two',
data: {...}
}
]
}doc 2
{
token: 'bar'
services: [
{
service: 'one',
data: {...}
},
{
service: 'two',
data: {...}
}
]
}我想从第一个文档中获取{service: 'one', data: {...}}嵌入式文档。但是,我不太确定如何构造查询。有什么建议吗?
发布于 2012-11-15 06:26:02
如果您有这样的集合:
var coll = {
token: 'foo',
services: [
{
service: 'one',
data: {}
},
{
service: 'two',
data: {}
}
]
}可以使用:service: 'one'查询访问coll.services[0]对象。
更新的如果要按字段选择对象,可以尝试如下:
$.grep(coll.services, function(e) { return e.service == 'one' });发布于 2012-11-15 09:43:47
如果doc 1和doc 2表示同一个集合中的两个文档,则需要通过一些明确的标识符(如id或name等)获取第一个文档,然后从代码中读取服务数组的第一个元素。
如果doc 1和doc 2是查询的结果,并且需要筛选匹配{service:'one‘、data:{.}}的文档,那么因为服务是数组,所以需要使用$elemMatch。
coll.find( { services : { $elemMatch : { service : "one", data: { ... } } } } )https://stackoverflow.com/questions/13392348
复制相似问题