gpt4 book ai didi

mongodb - 聚合管道抛出错误 "A pipeline stage specification object must contain exactly one field."

转载 作者:IT老高 更新时间:2023-10-28 13:32:31 41 4
gpt4 key购买 nike

db.audiofiles.aggregate({
$match: {
privacy: { $ne: "same" },
date: { "$eq": "2017/04/25" },
deleted: 0
},
$group: { "_id": "$to_email" }
});

我使用了 $match 但仍然显示如下管道错误。

assert: command failed: {
"ok" : 0,
"errmsg" : "A pipeline stage specification object must contain exactly one field.",
"code" : 16435
} : aggregate failed

最佳答案

您需要将管道阶段放置在 array 中,即文档按顺序通过各个阶段。

db.collection.aggregate( [ { <stage> }, ... ] )

$group 管道步骤操作符应该在他们自己的对象/文档中,而不是作为 $match 的一部分 管道步骤。你聚合管道应该是

db.audiofiles.aggregate([
/* match pipeline */
{
"$match": {
"privacy": { "$ne": "same" },
"date": { "$eq": "2017/04/25" },
"deleted": 0
}
},
/* group pipeline */
{
"$group": {
"_id": "$to_email",
"count": { "$sum": 1 }
}
}
]);

或者将管道步骤创建为对象变量,您可以将其推送到数组中,并且该数组将成为管道以用作 aggregate() 方法参数:

/* match pipeline */
var match = {
$match: {
privacy: { $ne: "same" },
date: { "$eq": "2017/04/25" },
deleted: 0
}
},
/* group pipeline */
group = {
$group: {
"_id": "$to_email",
"count": { "$sum": 1 }
}
};

db.audiofiles.aggregate([match, group]);

如果您没有从上面得到任何响应,请尝试仅一步运行聚合管道:

db.audiofiles.aggregate([match]);

匹配步骤的结果将被传送到下一阶段,所以如果您没有得到任何结果,这意味着 $match 管道步骤未找到任何匹配的文档。改一些参数看看有没有结果。

关于mongodb - 聚合管道抛出错误 "A pipeline stage specification object must contain exactly one field.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43584023/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com