我对不同的查询有一些问题。
db.sessions.distinct("tests.device_serial")
[
"",
"5b34f4bf9854a",
"5b34f4bf98664",
"5b34f4bf98712",
"5b34f4bf9876b",
"5b34f4bf987c6"
]
我不想得到空字符串的结果。我尝试运行查询:
db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
[ ]
为什么我得到空数组?我的错误在哪里?
猜测tests.device_serial是一个数组,这是你的错误:
db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
您的不同命令中的查询正在过滤数组“测试”的文档contains名为 device_serial 且值为“”的字段,而不仅仅是数组中的字段。
为了实现你想要的,你可以使用聚合框架,将数组展开到多个文档,使用 $addToSet 命令按 null 进行过滤和分组来获取不同的值。
这是查询:
db.sessions.aggregate(
[
{
$unwind: {
path : "$tests"
}
},
{
$match: {
"tests.device_serial":{$ne:""}
}
},
{
$group: {
"_id":null,
"device_serials":{$addToSet:"$tests.device_serial"}
}
},
]
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)