我正在使用查询控制台进行 MongoDB 查询。
let ids = db.collection.aggregate([
{
$match: { ... }
},
{
$group: {
_id: "$field"
}
}
]).map(doc => doc._id);
然后我想在第二个查询中使用该变量
db.collection.aggregate([
{
$match: {
"field": { $in: ids },
...
}
}
]);
注意:
field
是字符串类型。
第一个查询成功完成,但第二个查询失败并出现奇怪的错误:
错误解组返回嵌套异常是:WriteAbortedException 写入中止; NotSerializedException:com.oracle.truffle.api.TruffleStackTraceElement
我确定变量
ids
有问题,因为如果我用"field": { $in: ['1', '2'] }
修改第二个查询,那么它就可以正常工作。
事实证明,关键是追加
.toArray()
,因此 ids
变量实际上变成了一个数组。
这适用于 DataGrip:
let ids = db.collection.aggregate([
{
$match: { ... }
},
{
$group: {
_id: "$field"
}
}
]).map(doc => doc._id).toArray();