我使用Mongodb数据库和Compass工具来可视化我的数据。 我的收藏名为' ProbCancer'看起来像那样:
probCancers: [
cases: [
{
case: {
bi: Number,
age: Number,
},
level: Number,
_id: false,
}
]
]
由于我在cases
数组中有很多对象,因此很难对它们进行分析。我想只找到level = -1的对象。有没有办法在罗盘中进行此查询?在query
中提供db.probCancers.find(query);
参数也可能对我有所帮助。
答案 0 :(得分:6)
不幸的是,指南针不支持$elemMatch投影。该问题有一个开放的tracker。 (我没有足够的声誉来评论Bentaiba的答案。)
答案 1 :(得分:3)
我通过以下链接找到了如何在mongoDB shell中执行此操作:Mongodb, search object in nested Array,但我不知道为什么它在罗盘版本1.11.2中不起作用。
有一个解决方案是定义query
参数,例如{cases: {$elemMatch: { level: -1}}}
,并且为了防止获取完整的cases
数组,我们应该指定projection
字段。它与query
字段相同。但是此解决方案返回cases
数组中与level = -1
匹配的第一个对象。
所以,这就是结果:
db.probCancer.find({cases: {$elemMatch: { level: -1}}},
{cases: {$elemMatch: { level: -1}}}
);
在mongoDB中,要在嵌套数组中执行查询,必须将数组展平。然后查询将在生成的flatted数组中完成。为此,我们需要使用管道聚合,请参阅the link。
这段代码会给我们想要的结果:
db.probCancer.aggregate([ { $unwind : "$cases" }, { $match : {"cases.level":-1}} ]);
答案 2 :(得分:0)
尝试怎么样:
Intent intent = new Intent("action1");
sendBroadcast(intent);
或者您可以使用 $ all ,您可以在mongodb的官方文档中找到更多信息:Link to documentation