查询 Mongodb 以获得子 - 子文档

Query Mongodb for Sub - Subdocument

我有一个 mongodb 格式如下的文档

{
    inner : [{
        name : "I don't this",
        anotherName: "I don't want this",
        wayInside : [{
            something : 'skip this',
            somethingElse : 'skip this',
            someArray: { 
                 stuff:'I want this',
                 morestuff: {
                   field3: "Show me",
                   field2: "Show me",
                   field3: [{ "show everything from here down" }]
            }
        }]
    }]
}

我想像这样在 wayInside 中得到第一条记录

result: [{ 
                 stuff:'I want this',
                 morestuff: {
                   field3: "Show me",
                   field2: "Show me",
                   field3: [{ show everything from here down }]
 }]

我不想匹配任何东西,我只想将 moreStuff 中的所有数据与 morestuff 属性 上方的一个字段(在此示例中为 "stuff")匹配=].我该怎么做?

我已经尝试聚合并查找...但还没有接近...

我认为您正在寻找的是 MongoDB shell 中的投影参数,它在其特定于平台的驱动程序中也可用。

http://docs.mongodb.org/manual/reference/method/db.collection.find/

所以你会想要这样的东西:

db.inner.find({
    "name": "I want this"
}, {
    "name": true,
    "wayInside": true
});

使用aggregation pipeline

db.test.aggregate([
    {$unwind: "$inner"},
    {$unwind: "$inner.wayInside"},
    {$project: {
        stuff: "$inner.wayInside.someArray.stuff", 
        morestuff: "$inner.wayInside.someArray.morestuff"
    }}, 
    {$project: {stuff: 1, morestuff: 1, _id: 0}}
])

输出

{ 
    "stuff" : "I want this", 
    "morestuff" : { 
        "field3" : [ "show everything from here down" ],     
        "field2" : "Show me" 
    } 
}