所以,在我的MongoDB中,我有几个看起来像这样的文档:
{
"_id" : ObjectId("56a17b7f5f7ecf32c5ee0077"),
"MediaID" : "302048",
"MediaName" : "El Viejo y el Mar",
"MediaTypeID" : "384",
"MediaTypeName" : "Movie",
"Rating" : NumberInt(0),
"Description" : "La versión cinematográfica de la obra inmortal de Ernest Hemingway, sobre un viejo pescador cubano que logra atrapar un pescado gigantesco que lo arrastra lejos de la orilla.",
"MediaWebLink" : "",
"Duration" : "5160",
"FileID" : "523852",
"like_counter" : NumberInt(0),
"EntryId" : "",
"Tags" : [
{
"Key" : "Clasificacion",
"Value" : "B"
},
{
"Key" : "Genre",
"Value" : "Drama|Clásicas"
},
{
"Key" : "Pais",
"Value" : "Estados Unidos"
},
{
"Key" : "Directors",
"Value" : "John Sturges"
},
{
"Key" : "Actors",
"Value" : "Spencer Tracy"
},
{
"Key" : "Distribuidor",
"Value" : "Warner"
},
{
"Key" : "Subtitles",
"Value" : "Español"
},
{
"Key" : "Audio Version",
"Value" : "Inglés"
},
{
"Key" : "Sub-Genre",
"Value" : ""
},
{
"Key" : "Palabras Clave",
"Value" : ""
},
{
"Key" : "Prizes",
"Value" : ""
}
],
"Metas" : [
{
"Key" : "Nombre original",
"Value" : "The Old Man And The Sea"
},
{
"Key" : "Synopsis corta",
"Value" : "Es la historia de un viejo pescador cubano que logra atrapar un pescado gigantesco que lo arrastra lejos de la orilla."
},
{
"Key" : "Duracion",
"Value" : "01:26:00"
},
{
"Key" : "Ano",
"Value" : "1958"
},
{
"Key" : "Score de titulo",
"Value" : "4"
}
],
"AdvertisingParameters" : [
]
}
在文档中,有一个名为TAGS的数组,其中一个Key = Distribuidor和Value = Warner 我需要的是做一个查询,我可以获得所有文件的所有区别“distribuidor”值。
到目前为止,我已经尝试过这个:
db.catalogo.distinct( 'Tags.Value', { 'Tags.Key': 'Distribuidor' } )
但这给了我所有的价值,而不仅仅是“分配者”的价值。
有什么建议吗?
答案 0 :(得分:0)
如果我理解了这个问题,试试这个,UPD:
db.catalogo.find( {}, { 'Tags.Key': 1 } )
答案 1 :(得分:0)
尝试以下aggregation pipeline:
db.catalogo.aggregate({
$unwind: "$Tags"
}, {
$match: {
"Tags.Key": "Distribuidor"
}
}, {
$group: {
_id: "$Tags.Value"
}
})
简而言之,我们有一个unwind,可以在多个文档中展开您的Tags
数组;然后是match,过滤掉不"Distribuidor"
为Key
的标签,然后过滤group,与Value
不同在这种情况下(您可以轻松地为每个值添加count
,但这不是您提出的问题)。输出类似于
{ "_id" : "Warnero" }
{ "_id" : "Warner" }