如何解决MongoDB可以将多个字段添加到单个$ addToSet吗?
说我有
user {
_id: ObjId(..),name: "John Smith",computers: ["MSI desktop","Mac Book"],phones: ["Pixel","Galaxy"]
}
在下面的示例中,我尝试查找聚合中所有计算机和电话的不同值,但将其作为一个字段,如下所示:
db.user.aggregate([
{
$group: {
_id: null,"electronics": {$addToSet: ["$computers","$phones"]}
}
},])
上面显然是抛出了一个错误,所以我想知道是否有一种方法可以使用$addToSet
。
解决方法
您可以使用as per Nico's answer to this more specific question for chrome运算符来获取出现在任何数组中的所有值:
db.user.aggregate([
{
$group: {
_id: null,"electronics": {$setUnion: ["$computers","$phones"]}
}
},])
目前无法对其进行测试,但是您必须完全获得所需的东西。
,$ unwind + $ addToSet + $ concatArrays:
db.test.insert({ name: "John Smith",computers: ["MSI desktop","Mac Book"],phones: ["Pixel","Galaxy"]
})
db.test.aggregate([
{$unwind:'$computers'},{$unwind:'$phones'},{$group: {_id: null,e: {$addToSet: '$computers'},e2: {$addToSet: '$computers'}}},{$project:{electronics:{$concatArrays:['$e','$e2']}}},])
{ "_id" : null,"electronics" : [ "MSI desktop","Mac Book","MSI desktop","Mac Book" ] }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。