无法使用Object.keys()

时间:2018-09-19 11:31:13

标签: javascript mongodb aggregation-framework

我正在尝试将查询结果中的所有键检索到数组中。应该是一件超级容易的事情,但是却不能够做到。这是代码段:

fromMongoDB = parent.posts[0]
returnedkeys = Object.keys(fromMongoDB);
console.log(fromMongoDB);
console.log('-----------------------------');
console.log(returnedkeys);

我收到的fromMongoDB数据是一个具有两个键值对的对象:

{
   id: <some ID>,
   title: <some title>
}

使用Object.keys(),我打算得到两个键的数组:

[
  id, title
]

但这是我得到的:

{ id: '5ba1f3e7cc546723422e62a4', title: 'A Title!' }
-----------------------------
[ '__parentArray',
  '__parent',
  '__index',
  '$__',
  'isNew',
  'errors',
  '_doc',
  '$init' ]

我在做什么错? fromMongoDB不是JSON对象吗?

3 个答案:

答案 0 :(得分:1)

您可以在mongodb 3.4.4 及更高版本

中尝试以下聚合
db.collection.aggregate([
  { "$project": {
    "keys": {
      "$objectToArray": "$$ROOT"
    }
  }},
  { "$project": { "keys": "$keys.k" }}
])

答案 1 :(得分:1)

尝试这样的事情:

Object.getOwnPropertyNames(fromMongoDB);

答案 2 :(得分:1)

请尝试使用lean()函数。 将.lean()附加到查询中,然后使用Object.keys()获得键数组。