小编sty*_*ane的帖子

基于某些条件的两个字段的总和

这些是我Stat收集的文件:

{placeid: 'plaza', guestid: "xxx", logtype: "purchase", value: 12}
{placeid: 'plaza', guestid: "xxx", logtype: "visit", value: 0}
{placeid: 'plaza', guestid: "xxx", logtype: "purchase", value: 17}
{placeid: 'plaza', guestid: "yyy", logtype: "visit", value: 0}  
Run Code Online (Sandbox Code Playgroud)

我想聚合这些文档来获取信息(plaza作为参数传递):

  • xxx 访问量:1,购买:2,购买价值为29
  • yyy 访问量:1,购买:0,购买价值为0

这是我的方法:

Stat.aggregate(
        [
            { $match: { placeid: "plaza" } },
            {
                $group: {
                    _id: "$guestid",
                    totallogs: { $sum: 1 },
                    totalvalue: { $sum: "$value" },
                }
            }
        ]
)  
Run Code Online (Sandbox Code Playgroud)

这里的问题是这个聚合没有考虑logtype到.

我不知道如何改进它.有帮助吗?

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
905
查看次数

计算与给定条件匹配的子文档

我的Mongo集合包含以下形式的文档:

{
    ...
    "notifications": [
        {
            "enabled": true,
            "groups": [ "NG1", "NG3" ]
        },
        {
            "enabled": false,
            "groups": []
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

其中enabled是布尔值,groups是一个字符串列表.我需要执行的查询来确定有多少项notificationsenabled = true和包含给定的字符串groups(如NG3).

以前,没有enabled后来作为要求引入的属性,我的查询很简单

db.collection.find({ "notifications.groups": "NG3" })
Run Code Online (Sandbox Code Playgroud)

我尝试了一些与$and运营商的组合,但没有运气,所以任何建议都是受欢迎的.提前致谢!

mongodb mongodb-query aggregation-framework

3
推荐指数
1
解决办法
2301
查看次数

在python中创建切片对象

如果我有一个数组a,我理解如何以各种方式切片.具体来说,要从任意的第一个索引切片到数组的末尾,我会这样做a[2:].

但是我如何创建切片对象来实现同样的目的呢?这两种方式创建的切片对象的记录slice(start, stop, step)slice(stop).

所以,如果我传递一个参数就像我会a[2:]slice对象将它解释为停止索引,而不是开始索引.

问题:如何slice使用起始索引将索引传递给对象并获取切片对象一直切到最后?我不知道列表的总大小.

python slice python-3.x

3
推荐指数
1
解决办法
1368
查看次数

同一文档中3个字段的平均值

我在我的数据库中存储的文档具有完全相同的"模式".每个文档都有三个浮点值(键是"A","B"和"C"),我需要做的是将每个文档输出为三个浮点数的平均值.

我还需要除以100,所以我的计算是(A + B + C)/ 3/100.据我所知,我需要将每个文档作为一个不同的输出进行投影,但$ group在这里没用(因为我没有对所有文档进行平均,只是每个文档).

我需要首先能够将其编写为MongoDB命令,然后将其转换为PHP.我想我将能够完成PHP部分,但我需要的是一些帮助开始实际的MongoDB命令...

db.measurements.aggregate(   )
Run Code Online (Sandbox Code Playgroud)

我的数据存储如下:

{ "_id" : ObjectId(xxx), "A": 22.34, "B": 23.32, "C": 75.32, "device_id": 3 }
{ "_id" : ObjectId(xxx), "A": 22.34, "B": 23.32, "C": 75.32, "device_id": 3 }
{ "_id" : ObjectId(xxx), "A": 22.34, "B": 23.32, "C": 75.32, "device_id": 3 }
Run Code Online (Sandbox Code Playgroud)

当我提交get请求时,我需要我的数据如下:

{ "_id" : ObjectId(xxx), "Average of A,B,C": 40.50, "device_id": 3 }
{ "_id" : ObjectId(xxx), "Average of A,B,C": 40.50, "device_id": 3 }
{ "_id" : ObjectId(xxx), "Average of …
Run Code Online (Sandbox Code Playgroud)

php mongodb aggregation-framework

3
推荐指数
1
解决办法
91
查看次数

有没有办法在同一个 $project 中使用 $filter 和 $sum?

假设我的聚合管道中有一个文档,如下所示:

{
  scores: [
    {type: 'quiz', score: 75},
    {type: 'quiz', score: 62},
    {type: 'final', score: 34},
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用$project它来转换它,我想得到测验分数的总和,有没有办法以某种方式将我的$filter$sum.

我知道我可能会使用两个$projects,但是我目前设置管道的方式将迫使我继续在我的第二个项目中重新投影大量密钥,我想避免这种情况。

mongodb mongodb-query aggregation-framework

3
推荐指数
2
解决办法
5119
查看次数

在mongoDB中合并两个数组字段

我有以下结构的集合

{
   _id : ObjectId("52f0795a58c5061aa34d436a"),
   "attribute1" : [1, 3, 6, 7],
   "attribute2" : [2, 4, 6, 8]
}
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以合并这两个属性,同时使用mongoDB中的聚合查询删除重复项?我需要结果是这样的:

{
   _id : ObjectId("52f0795a58c5061aa34d436a"),
   "attribute3" : [1, 3, 6, 7, 2, 4, 8]
}
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

2
推荐指数
2
解决办法
6840
查看次数

Mongo DB $和两个字段的条件

我在MongoDb Tweet Training中有一个集合,在这些集合中,我收集了有关tweet的特定信息。我有三个领域(情感,类别和tekst)。我将不执行查询来识别“类别”等于“荷兰合作银行”且情绪等于“中性”或“类别”等于“ Ing”且情绪等于“中性”。

我之前使用以下查询:

db.TweetTraining.find( { 
    $and: [ 
            { $or: [ { sentiment:"neutraal" } ,{ Categorie:"Rabobank" } ]},
            { $or: [ { sentiment:"neutraal" } ,{ Categorie:"Ing" } ]}
]})
Run Code Online (Sandbox Code Playgroud)

但是除了获得正确的结果外,我还会得到其他Cattegorie的结果。

mongodb mongodb-query

2
推荐指数
1
解决办法
4311
查看次数

mongodb中的最大值和最小值

我有以下数据库条目:

我的插入查询

 db.collection.insert({company:"C3",model:"M3",price:55600,discount:9,resolution:"100X700",connectivity:"hdmi2",warranty:"3",image:"image2.jpg",size:50,display:"lcd",brand:"Brand4",functionality:"functionality2"});
Run Code Online (Sandbox Code Playgroud)

有超过2000个条目,我试图找出整个集合中的最大和最小价格,如下所示:

db.collection.find({max:{$max:"$price"}, min:{$min:"$price"}});
Run Code Online (Sandbox Code Playgroud)

希望输出为{max:2000,min:5000},请帮助.谢谢

mongodb mongodb-query aggregation-framework

2
推荐指数
1
解决办法
9228
查看次数

使用正则表达式在MongoDB中获取物化路径中的直接后代

在MongoDB集合中,我有物化路径树模型,如:

",Books,Programming,Databases,NoSQL,"
",Books,Programming,Databases,SQL,"
Run Code Online (Sandbox Code Playgroud)

用于获取所有使用的后代Programming:

db.categories.find( { path: /,Programming,/ } )
Run Code Online (Sandbox Code Playgroud)

创建请求的任何可用性是否只能找到直接后代Programming?即会找到记录,Databases但不会NoSQLSQL.

regex mongodb mongodb-query

2
推荐指数
1
解决办法
154
查看次数

如何对 MongoDB 集合中的对象进行分组

我有这样的文档集

{ "owner": "550511223", "file_name": "55234OT01", "file_type": "other", "comment": "Just fix it"},
{ "owner": "550510584", "file_name": "55584RS01", "file_type": "resume", "comment": "Good enough"},
{ "owner": "550511223", "file_name": "55234AP01", "file_type": "applicant", "comment": "This will do"}
Run Code Online (Sandbox Code Playgroud)

我需要一个像这样的对象的结果

{
 [{
  "owner" : "550510584",
  "files" : [{"file_name": "55584RS01","file_type": "resume","comment": "Good enough"}],
 },{
  "owner" : "550511234",
  "files" : [{"file_name": "55234AP01","file_type": "applicant","comment": "This will do"},
             {"file_name": "55234OT01","file_type": "other","comment": "Just fix it"}]
 }]
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来做到这一点。我尝试过分组和聚合,但我只能将 file_name 字段推入,因为我搞乱了语法

mongodb mongodb-query aggregation-framework

2
推荐指数
1
解决办法
3630
查看次数