Mongoose选择从数组元素中选择特定字段

7
假设我有以下模式:
{
jedi: [{
       name:String
       lightsaber_color:String
      ]}
}

我希望能够返回所有名称,且仅限于名称。 我尝试过


Jedi.find({})
    .select('jedi.name')
    .exec(function (err, jedi) {
      if (err) {
        console.log("nothing found")
      }
}

这段代码返回空值,而这段代码返回所有内容。
Jedi.find({})
        .select('jedi')
        .exec(function (err, jedi) {
          if (err) {
            console.log("nothing found")
          }
    }

我看到jedi是一个数组,因此我认为.select('jedi.name')可能行不通。
正确的语法应该是什么?

1个回答

1
你可以尝试使用这个。
Jedi.find({}, {'jedi.name':1}, function (err, jedi) {
      if (err) {
        console.log("nothing found")
      }
      else{
        console.log(jedi);
      }
}

你能解释一下这个语法 {'jedi.name':1} 吗? - r4id4
在查找查询中,第一个对象用于查询,第二个对象可以传递您想要在结果中获取的任何字段,希望这对您有用。 - Soni Pandey
我无法让它工作。基本上它返回给我整个结构,而不仅仅是名称。那段代码中的“1”是什么意思? - r4id4
1 意味着我必须返回该字段。 - Soni Pandey
可能的问题是字段被.populate('jedi')填充了吗?显然,上面的示例只是一个简单的例子。 - r4id4
我们会在一个集合与另一个集合相关联时进行填充,因此要获取另一个集合的数据,请使用填充。根据您的问题,我的答案是正确的,我认为您需要查看一下mongoose文档,看起来您对mongoose还不熟悉。 - Soni Pandey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接