我在mongo集合中有一组文档,它们的模式如下所示:
{
"itemIds":{
"12341234-1234-1234-1234-123412341234": true,
"23452345-2345-2354-2345-234523452354": false,
"34563456-3456-3456-3456-345634563456": true
}
}
由于我们要转向Azure认知搜索,我需要使用mongo投影来获得如下所示的数据:
{
"itemIds": ["12341234-1234-1234-1234-123412341234",
"34563456-3456-3456-3456-345634563456"]
}
应排除值为false的属性,并将值为true的属性转换为数组值。
1条答案
按热度按时间lhcgjxsq1#
选项1。可能是这样的:
解释道:
1.在addFileds阶段,将对象转换为数组,以获取k,v形式的键/值,这样您就可以只过滤真值。
1.在项目阶段,项目itemIds数组中的_id和itemIds.k值
Playground1
**选项2。**通过单级实现更快的选项:添加字段/$Map/$过滤器:
解释道:
将ObjectToArray中的筛选值Map到addFields中,只投影必要的数组值。
Playground2