Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何从mongoDB查询中的对象返回单个属性?_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 如何从mongoDB查询中的对象返回单个属性?

Node.js 如何从mongoDB查询中的对象返回单个属性?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个如下的查询: listProjectQry = [ { $match: { city: city } }, { $project: { _id: 0, rating: 1, title: 1, amenities: 1 } } ] 这很好,但便利设施对象实际上映射到一组本身包含多个字段的便利设施对象。现在我得到了所有的便利设

我有一个如下的查询:

listProjectQry = [
    {
      $match: {
        city: city
      }
    },
    {
      $project: {
        _id: 0,
        rating: 1,
        title: 1,
        amenities: 1
      }
    }
  ]
这很好,但便利设施对象实际上映射到一组本身包含多个字段的便利设施对象。现在我得到了所有的便利设施,但我想知道我是否可以制作一个只包含便利设施ID的阵列,并将其发送回客户


这样做的目的是提高查询的性能并缩短查询时间。也许这种优化无助于加快速度?

您可以使用点符号:

{
    $project: {
        _id: 0,
        rating: 1,
        title: 1,
        "amenities._id": 1
    }
}
它将返回具有一个属性的对象数组
\u id
,或用于获取值数组

amenityIds: {
    $map: {
        input: "$amenities",
        in: "$$this._id"
    }
}

@米奇,这成功了!非常感谢。然而,我刚刚意识到,还有一个方面我忘了考虑。如果设施上的布尔值为true,我基本上需要返回设施ID。但如果它不是真的,那么就不需要返回。有没有快速解决办法?我采用了点表示法。@Westley如果要删除这些文档,可以尝试使用$map和$filter;如果只想隐藏它们,可以尝试使用$map和$cond