小编erk*_*opi的帖子

是否可以在 MongoDB 中的 $cond 中编写正则表达式

我需要使用 $cond 来组合不同的列,我需要写的一个 $cond 如下:

create_widget: {
        $sum:{
          $cond:[{$and: [ {$eq: ['$Method', 'POST']},
                {Url:{$regex: /.*\/widgets$/}} ]}, 1, 0]
        }
    }
Run Code Online (Sandbox Code Playgroud)

而且这段代码不对,好像正则表达式不能放在这里。有没有其他方法可以做到这一点?我想匹配 Url 和正则表达式并将代码放在 $cond 下。

示例数据看起来像

{"BrandId":"a","SessionId":"a1","Method":"POST","Url":"/sample/widgets"}
{"BrandId":"a","SessionId":"a2","Method":"POST","Url":"/sample/blog"}
{"BrandId":"b","SessionId":"b1","Method":"PUT","Url":"/sample/widgets"}
Run Code Online (Sandbox Code Playgroud)

我写的整个代码如下:

db.tmpAll.aggregate([
    {$group: {
        _id: {BrandId:'$BrandId'},
        SessionId: {$addToSet: '$SessionId'},
        create_widget: {
            $sum:{
              $cond:[{$and: [ {$eq: ['$Method', 'POST']},
                    {} ]}, 1, 0]
            }
        }
    }},
    {$group: {
        _id: '$_id.BrandId',
        distinct_session: {$sum: {$size: '$SessionId'}},
        create_widget: {$sum: '$create_widget'}
    }}
]);
Run Code Online (Sandbox Code Playgroud)

示例代码的预期结果是

{ "_id" : "a", "distinct_session" : 2, "create_widget" : 1 }
{ "_id" …
Run Code Online (Sandbox Code Playgroud)

regex mongodb conditional-statements

7
推荐指数
1
解决办法
4800
查看次数

使用Mongo按组计算多个不同的字段

我的数据集看起来像

{"BrandId":"a","SessionId":100,"UserName":"tom"}
{"BrandId":"a","SessionId":200,"UserName":"tom"}
{"BrandId":"b","SessionId":300,"UserName":"mike"}
Run Code Online (Sandbox Code Playgroud)

我想用brandid计算不同的会话和用户名组,示例sql如下:

select brandid,count_distinct(sessionid),count_distinct(username)
from data
group by brandid
Run Code Online (Sandbox Code Playgroud)

我试着编写Mongo DB,我当前的代码如下,它不起作用.反正有没有让它工作?

db.logs.aggregate([ 
    {$group:{
        _id:{brand:"$BrandId",user:"$UserName",session:"$SessionId"},  
        count:{$sum:1}}}, 
    {$group:{
        _id:"$_id.brand",
        users:{$sum:"$_id.user"},
        sessions:{$sum:"$_id.session"}
    }}
])
Run Code Online (Sandbox Code Playgroud)

对于某个例子,预期的数量是

{"BrandId:"a","countSession":2,"countUser":1}
{"BrandId:"b","countSession":1,"countUser":1}
Run Code Online (Sandbox Code Playgroud)

如果您了解SQL,则期望结果与我提到的SQL相同.

mongodb aggregation-framework

5
推荐指数
1
解决办法
2867
查看次数

为什么我在AngularJs中的http.delete时无法传递参数?

我有调用http.delete并传递参数标志的函数:

function softDeleteDatasource(datasourceId,flag) {
            var url = baseUrl + datasourceId;
            return $http.delete(url, {'currentFieldSetFlag':flag});
        }
Run Code Online (Sandbox Code Playgroud)

然后我假设我可以使用以下代码获取req.body.但是,我总是undefinedconsole.log.我使用完全相同的代码http.post,它在传递参数时工作正常.

var bodyParser = require('body-parser');
var jsonParser = bodyParser.json();
router.delete('/:datasourceId', jsonParser, function(req, res) {
   console.log(req.body.currentFieldSetFlag);
}
Run Code Online (Sandbox Code Playgroud)

我很困惑为什么相同的代码不能传递参数http.delete?谁知道怎么通过呢?

javascript http angularjs

5
推荐指数
1
解决办法
3336
查看次数

如何在MongoDB中加入两个聚合结果?

我有一个数据集看起来像

{"BrandId":"a","SessionId":100,"Method": "POST"}
{"BrandId":"a","SessionId":200,"Method": "PUT"}
{"BrandId":"a","SessionId":200,"Method": "GET"}
{"BrandId":"b","SessionId":300,"Method": "GET"}
Run Code Online (Sandbox Code Playgroud)

我通过brandid写了聚合计数不同的会话ID:

 db.collection.aggregate([
     {$group: {
                "_id": {
                    brand: "$BrandId",
                    session: "$SessionId"
                },
                count: {$sum: 1}
        }},
        {$group: {
                _id: "$_id.brand",
               countSession:{$sum:1}
        }}
    ])
Run Code Online (Sandbox Code Playgroud)

该查询的预期结果是:

{ "_id" : "a", "countSession" : 2 }
{ "_id" : "b", "countSession" : 1 }
Run Code Online (Sandbox Code Playgroud)

另一个查询是按品牌计数方法在POST的位置:

 db.collection.aggregate([
        {$match: {Method:"POST"}},
        {$group: {
            _id: '$BrandId', 
            countPOST:{$sum:1}
       }}
    ])
Run Code Online (Sandbox Code Playgroud)

预期结果:

{ "_id" : "a", "countPOST" : 1 }
{ "_id" : "b", "countSession" : 0 }
Run Code Online (Sandbox Code Playgroud)

现在,我想结合这两个查询并获得预期的结果,如下所示:

{"BrandId:"a","countSession":2,"countPOST":1}
{"BrandId:"b","countSession":1,"countPOST":0}
Run Code Online (Sandbox Code Playgroud)

我不怎么将两个聚合的这两个结果结合起来,谁能帮忙?

mongodb

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

春天@Value无法正常工作

import org.springframework.beans.factory.annotation.Value;
Run Code Online (Sandbox Code Playgroud)

我使用spring @ value从配置中获取值,它在其他类(控制器和其他服务)中也能正常工作,但在模型中不起作用:

public final class Page {
  @Value("${defaultUrl}")
  private static String defaultUrl; 

  private String url;

  public Page(String url) {
    this.url = url;
  }
  public Page() {
    this(defaultUrl);
  }
}
Run Code Online (Sandbox Code Playgroud)

在上述情况下,无法从Spring.value获取defaultUrl。有人知道为什么吗?

java spring

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