在MongoDB查询中,如何获取嵌套文档中包含的_id中的字段

在MongoDB查询中,如何获取嵌套文档中包含的_id中的字段,mongodb,Mongodb,假设student集合中有一个文档,如下所示: { _id:{ time: 1 loc: 'A' }, name: 'Jery' } { _id:{ time: 1 } } 我想过滤\u id.time,如下所示: db.student.find({},{''u id.time':1}) 但我得到了一个结果: { _id:{ time: 1 loc: 'A' } } 为什么结果不是这样

假设
student
集合中有一个文档,如下所示:

{
  _id:{
       time: 1
       loc: 'A'
      },
 name: 'Jery'
}
{
 _id:{
      time: 1
     }
}
我想过滤
\u id.time
,如下所示:

db.student.find({},{''u id.time':1})

但我得到了一个结果:

{
 _id:{
      time: 1
      loc: 'A'
     }
}
为什么结果不是这样:

{
  _id:{
       time: 1
       loc: 'A'
      },
 name: 'Jery'
}
{
 _id:{
      time: 1
     }
}
那么,我的错误在哪里?以及如何编写查询操作


谢谢。

刚刚尝试了一些方法,但似乎有局限性:

>db.students.find({},{u-id:0,{u-id.time:1})
{  }
{  }
>db.students.find({},{''u id.loc':0,'u id.time':1})
错误:错误:{
“ok”:0,
“errmsg”:“投影不能同时包含和排除。”,
"守则":二,,
“代码名”:“BadValue”
}
但是,您可以通过使用
$project
阶段的聚合查询轻松实现这一点

>db.students.aggregate({$project:{''u id.time':1}})
{u id:{“时间”:1}
{u id:{“时间”:2}

可能是错误的文档?看起来你有
时间:“1loc:'A'
而不是
时间:1,loc:'A”
谢谢。我确信文件是对的。嗯,至少给定的样本不是有效的文件。是的,你是对的。我简化了它,但是
键值对的结构类似。但是我有一个难题。假设
students1
集合中的文档如下所示,
{u id:0,name:{firstName:'Jack',lastName:'Brown'}
。By
db.students1.find({},{''u id':0,'name.lastName':1})
可以得到我想要的结果。例如,
{name:{lastName:'Brown'}}
。我猜这两个查询之间的差异可能是因为
\u id
是主键。你这样认为吗?我认为这可能与
有关\u默认情况下包含id
,并且你必须明确地说你不想要它。