在mongodb中使用project,当我们将输出作为数组时,是否可以替换\u id并将\u id值设置为1、2、3。。。n
用于数组中的所有文档。'“项目”正在提供以下输出:
查询:
db.premiumChange.aggregate([
{'$unwind': '$history'}
,{'$match': {
'history.startDate': {'$gte': ISODate('2018-01-21T11:13:14.000Z')}
,'history.endDate': {'$lte':ISODate('2018-02-20T11:13:14.000Z')}
}}
,{'$facet':{'APTCChange':[{'$match': {'history.APTCChange': {'$gt': 10}}}
,{'$limit':8}
,{ $project: {
APTCChange: '$history.APTCChange'}}]
,"PremChange": [ {$match:{"history.APTCChange":{"$gt":10}}}
,{'$limit':1}
,{ $project: {
APTCChange: '$history.APTCChange'}}]
,"MbrRespChg": [ {$match:{"history.MbrRespChg":{"$gt":10}}}
,{'$limit':1}
,{ $project: {
APTCChange: '$history.APTCChange'}}, {'$limit':1}] } }
])
上面的查询给出了下面的结果,自动添加了数组中文档的_id。但是根据我的要求,数组中的每个文档都应该有_id为0,1,2。。N
{
"APTCChange" : [
{
"_id" : "HCCIDM1234567A",
"APTCChange" : 1200,
},
{
"_id" : "HCCIDM1234567B",
"APTCChange" : 1200,
}],
"PremChange" : [
{
"_id" : "HCCIDM1234567A",
"APTCChange" : 1200,
},
{
"_id" : "HCCIDM1234567B",
"APTCChange" : 1200,
}],
"MbrRespChg" : [
{
"_id" : "HCCIDM1234567A",
"APTCChange" : 1200,
},
{
"_id" : "HCCIDM1234567B",
"APTCChange" : 1200,
}]}
相反,我需要像下面:
{
"APTCChange" : [
{
"_id" : 0,
"APTCChange" : 1200,
},
{
"_id" : 1,
"APTCChange" : 1200,
}],
"PremChange" : [
{
"_id" : 3,
"APTCChange" : 1200,
},
{
"_id" : 4,
"APTCChange" : 1200,
}],
"MbrRespChg" : [
{
"_id" : 5,
"APTCChange" : 1200,
},
{
"_id" : 6,
"APTCChange" : 1200,
}]}
尝试此聚合,我们通过将先前数组的$size
与元素的当前数组索引相加来计算_id
管道
db.col.aggregate([
{$project : {
APTCChange : {
$map : {
input : "$APTCChange",
as : "a",
in : {
_id : {$indexOfArray : ["$APTCChange._id", "$$a._id"]},
APTCChange : "$$a.APTCChange"
}
}
},
PremChange : {
$map : {
input : "$PremChange",
as : "a",
in : {
_id : {$add : [{$indexOfArray : ["$PremChange._id", "$$a._id"]}, {$size : "$APTCChange"}]},
APTCChange : "$$a.APTCChange"
}
}
},
MbrRespChg : {
$map : {
input : "$MbrRespChg",
as : "a",
in : {
_id : {$add : [{$indexOfArray : ["$MbrRespChg._id", "$$a._id"]}, {$size : "$APTCChange"}, {$size : "$MbrRespChg"}]},
APTCChange : "$$a.APTCChange"
}
}
}
}}
]).pretty()
结果
{
"_id" : ObjectId("5a9064a2996e36f33cd29dd0"),
"APTCChange" : [
{
"_id" : 0,
"APTCChange" : 1200
},
{
"_id" : 1,
"APTCChange" : 1200
}
],
"PremChange" : [
{
"_id" : 2,
"APTCChange" : 1200
},
{
"_id" : 3,
"APTCChange" : 1200
}
],
"MbrRespChg" : [
{
"_id" : 4,
"APTCChange" : 1200
},
{
"_id" : 5,
"APTCChange" : 1200
}
]
}
>
问题内容: 从ElasticSearch获取某个索引的所有_id的最快方法是什么?使用简单的查询是否可能?我的索引之一包含大约20,000个文档。 问题答案: 编辑:请也阅读@Aleck Landgraf的答案 您只想要elasticsearch-internal 字段吗?还是文档中的字段? 对于前者,请尝试 Note 2017更新: 该帖子最初包含在内,但此后名称已更改,并且是新值。 结果将仅包
问题内容: 首先,当我问一个非常基本且特殊的问题时,我感到很遗憾;但是我对Java和编程都不陌生。我研究了system.out.println()中的“ out”是系统类的对象。“ out”可以用系统类的任何其他对象替换吗?如果是这样,成员是什么? 问题答案: 您可以拨打任何电话。如果您查看javadoc,则会发现另一个静态字段,即。例如: 如果您想用自己的输出流实际替换标准,则可以将流传递给或相
问题内容: 可以在mongo db中像在SQL中那样选择集合的文档: 还是如果我有一个我必须一个一个地选择,然后重新组合结果? 问题答案: 简单 :) 摘自:http : //www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
我不会保存对象就业没有_id我想保存只是属性"就业"如下: 此文档和在db上记录的文档,具有自动生成的_id属性 我的Attribute employe模式为:
问题内容: 有谁知道如何在PHP中将数字1、2或3转换为其文本版本(一,二,三)?我只需要从1转换为99。我知道我可以写一个很大的switch语句,但这太荒谬了。 问题答案: 梨有一个软件包Numbers_Words:
问题内容: 我想替换所有我的Elasticsearch索引文档中的单个用户名。是否有API查询? 我尝试搜索多个但找不到。有人知道吗? 我的情况: 我在名为“ test”的索引中具有上述数据,并键入“ movies”。在这里,我想用“ alice”代替所有的“ bob”名称。 谢谢 问题答案: 通过查询更新是解决之道。 注意:请确保启用动态脚本,以使其起作用。