我的文档结构如下:
{
"_id" : ObjectId("...."),
"oneMoreId" : "....",
"items" : [
{
"itemId" : "...",
"type" : "Food",
}
]
}
当我在mongoDB中运行JSON查询:
db.inventory.aggregate([
{$match: { $and: [{"oneMoreId":"..."},{"items.type": "Food"}]}},
{"$project": {
"oneMoreId": 1,
"items": {
"$filter": {
"input": "$items",
"as": "item",
"cond": {
"$eq": ["$$item.type", "Food"]
}
}
}
}}
])
它工作得非常好。
但当我使用SpringData的MongoTemplate运行聚合时,它会让我
$filter的输入必须是数组而不是对象
这是我的聚合查询(只是投影部分):
ProjectionOperation projection = project("oneMoreId").and(new AggregationExpression() {
@Override
public Document toDocument(AggregationOperationContext context) {
return new Document("$filter", new Document(
"input", "$items")
.append("as","item")
.append("cond", new Document("$eq", Arrays.asList("$$item.type","Food")))
);
}
}).as("items");
我在控制台中打印出来,查询与上面的JSON查询完全相同。准确的我甚至尝试过纯Spring数据的查询:
ProjectionOperation projection = project("oneMoreId")
.and(filter("items")
.as("item")
.by(valueOf("item.type")
.equalToValue("Food"))).as("items");
同样,同样的错误(即使打印它会导致上面相同的JSON查询)。保存项的java对象是一个列表。我将其更改为仅使用数组项[],但它仍然不起作用。
任何帮助将不胜感激。
没有关系,
有人(我)错误地以对象的形式而不是数组的形式放入一个项目。那搞砸了一切。刚刚删除了整个记录,一切正常。
问题内容: 我正在努力使机器人围绕8 x 8的2d网格室移动,其中一部分正在初始化传感器,该传感器由围绕机器人的最近5个瓦片组成。 在这里,我创建了一个由5个元素组成的数组。 但是当我尝试像这样设置传感器的值时: 我得到“列表索引必须是整数,而不是元组”的错误。 问题答案: 您说的是一个“二维网格”-我假设它是一个列表列表。在这种情况下,您应该以以下方式访问其元素 而不是用该对索引外部列表。
问题内容: 我有以下抛出的非常基本的代码; 我尝试将解码设置为Data变量,如下所示,但是会引发相同的错误; 有什么建议? 问题答案: 您只是将其以错误的顺序放置,是无辜的错误。 (深入解答)。正如wim礼貌地指出的那样,在极少数情况下,他们可以选择UTF-16或UTF-32。在这种情况下,对于开发人员而言,这种情况将不那么常见,在这种情况下,他们将有意识地决定放弃宝贵的带宽。因此,如果遇到编码问
问题内容: 我一直在尝试更新一个名为libpynexmo的小型Python库以与Python 3一起使用。 我一直坚持这个功能: 遇到这个问题时,json会回应: 我在一些地方读到,应该为您传递带有附件的对象(在这种情况下为对象),但是它不适用于对象。 我不知道下一步该怎么做,但是由于我的整个1500行脚本是新转换为Python 3的,所以我不想回到2.7。 问题答案: 我最近写了一个小功能来发送
我将脚本中工作的 jsonschema 转换为 YAML 格式,以便使用 swagger 文档。问题是在第8行(-type:字符串)中,swagger显示错误:应该是对象,“项目”必须是对象。 Json模式
我正在使用pygame创建一个游戏,但遇到了一个错误,我是pygame的新手。我正在使用python 3.8和pycharm社区版2020.1 这是我制作游戏的视频:https://www.youtube.com/watch?v=FfWpgLFMI7w这里是错误: 这是我的密码:
我学习Python才几个星期,这个问题难倒了我。我试图创建一个简单的塔防风格的游戏使用Pyplay。已经在谷歌上搜索和研究了4个多小时(pyplay docs网站在发布时已经关闭,依赖于缓存版本)。我相信它最终会变得非常容易修复,但我没有主意了。 我把塔类放在一个文件中,主游戏循环放在另一个文件中。图像文件存储在名为“资产”的文件夹中,该文件夹与tower类和主游戏循环位于同一目录中。当我试图创建