我使用此方案存储一些文档:
{
"_id": ObjectId("..."),
"param0": "value0",
"status": {
"param1": "value1",
"param2": "value2",
"param3": "value3"
}
}
..当我请求子文档中的某些字段时
db.collection.find({}, {"param0": 1, "status.param1": 1, "status.param3": 1})
..它返回实际使用的嵌套对象:
{
"_id": ObjectId("..."),
"param0": "value0",
"status": {
"param1": "value1",
"param3": "value3"
}
}
是否可以像这样检索它?
{
"_id": ObjectId("..."),
"param0": "value0",
"status.param1": "value1",
"status.param3": "value3"
}
答案 0 :(得分:1)
是的,看看the docs。
这个例子反映了你的需要:
db.inventory.find({
producer: {
company: 'ABC123',
address: '123 Street'
}
})
db.inventory.find({'producer.company': 'ABC123'})
答案 1 :(得分:1)
如果您使用聚合框架转换文档,则可以非常接近您想要的内容:
db.collection.aggregate({
$project:{
param0: 1,
status_param1: "$status.param1",
status_param3: "$status.param3"
}
})
这会给你一个这样的结果:
{
"result" : [
{
"_id" : ObjectId("5207908547bbc806a99c5198"),
"param0" : "value1",
"status_param1" : "value1",
"status_param3" : "value3"
}
],
"ok" : 1
}
希望你能够使用这种类型的结果。
有关mongodb project aggregator
的更多信息