如何为嵌入文件编写mongo查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为嵌入文件编写mongo查询相关的知识,希望对你有一定的参考价值。
我有一个要求,我需要从不同的嵌入式文档中选择不同的字段
{
"isbn":"1234567890",
"title":"Mongo db",
"formats":[
{"isMaster":"true",
"digiform":"EBK",
"isbn":"6563636222"},
{"isMaster":"false",
"digiform":"EBGE",
"isbn":"333554445447"
},
{"isMaster":"false",
"digiform":"HARD",
"isbn":"776655440011"
}
]
}
{
"isbn":"11111",
"title":"SQL",
"formats":[
{"isMaster":"false",
"digiform":"EBK",
"isbn":"22222"},
{"isMaster":"false",
"digiform":"EBGE",
"isbn":"33333"
},
{"isMaster":"false",
"digiform":"HARD",
"isbn":"444444"
}
]
}
{
"isbn":"AABB11",
"title":"Linux",
"formats":[
{"isMaster":"true",
"digiform":"EBGE",
"isbn":"5555555"}
]
}
我想获得isMaster为true的对象的Title和ISBN,并且至少有一种格式,它具有digiform的值作为EBGE
所以结果会是
Title ISBN
Mongo db 6563636222
Linux 5555555
注意:我无法修改对象
答案
db.state.aggregate(
// Pipeline
[
// Stage 1
{
$unwind: {
path : "$formats",
preserveNullAndEmptyArrays : false
}
},
// Stage 2
{
$match: {
"formats.isMaster":"true",
"formats.digiform":"EBGE"
}
},
// Stage 3
{
$group: {
"_id":"$_id",
"title":{$last:"$title"},
"isbn":{$last:"$formats.isbn"}
}
},
]);
以上是关于如何为嵌入文件编写mongo查询的主要内容,如果未能解决你的问题,请参考以下文章
Solr Highlighting:如何为同一字段请求多个片段长度?
如何为使用两个数据库(mysql和mongo)的django项目编写单元测试
如何为 REST API 构建 Mongo 数据库 [关闭]