查询 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
});
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"
}
}
我有一个 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
});
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"
}
}