【发布时间】:2019-01-07 16:16:45
【问题描述】:
当尝试对集合用户进行切片并将其记录到控制台时,由于某种原因,应该切片的字段没有。
var filteredUsers =
users.find({},
{
"followers": { "$slice": -1 },
"subscribers": { "$slice": -1 },
"hour": { "$slice": -1 }
}
).toArray();
filteredUsers.forEach(user => {
console.log(user);
});
我使用的是 3.2 以上的 mongodb 版本,所以这应该不是问题。
日志输出:
{
_id: 'fakeId',
subscribers: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, null, 0 ],
followers: [ 1, null, 1, null, 1, 0, 1, 0, 1, 1, 1 ],
hour:
[ 313347,
316733,
316735,
316968,
316969,
317349,
317350,
318746,
318747,
324667
]
}
【问题讨论】:
-
我有 mongo db 版本 v3.6.5。它对我很有效。
-
$slice投影已在 2.2 版中引入,因此@Jack 在这里不是问题...而@Arin 您的代码有效,请参见此处mongoplayground.net/p/_1sBpuQNOuO... 可能是问题出在.toArray()这里 -
@AnthonyWinzlet 似乎 toArray() 确实可能是问题之一,尽管在删除它之后我仍然没有得到切片数据。难道是 .find() 返回游标的事实和问题?
-
是的......在这里使用回调或承诺或异步等待
标签: javascript node.js mongodb mongoose slice