zoukankan      html  css  js  c++  java
  • E QUERY [main] SyntaxError: identifier starts immediately after numeric literal mongodb mapReduce 异常分析 集合命名规范

    异常信息

    repl_test:PRIMARY> db.0917order_totals_b.find()
    2018-09-28T15:13:03.992+0800 E QUERY [main] SyntaxError: identifier starts immediately after numeric literal @(shell):1:2
    repl_test:PRIMARY> db.0917order_totals_b.find({})
    2018-09-28T15:13:13.464+0800 E QUERY [main] SyntaxError: identifier starts immediately after numeric literal @(shell):1:2

    情景还原

    【使用mapReduce统计指定时间戳区间的交易行为总数】

    聚合,统计0917消费金额总和

    Aggregation — MongoDB Manual https://docs.mongodb.com/manual/aggregation/

    db.accounting_center_orders.mapReduce(function(){emit(this.service_id,this.val)},function(key,values){return Array.sum(values)},{query:{create_timestamp:{$lt:1537200000,$gt:1537113600}},out:"0917order_totals"})


    {
    "result" : "0917order_totals",
    "timeMillis" : 978,
    "counts" : {
    "input" : 78010,
    "emit" : 78010,
    "reduce" : 2828,
    "output" : 14
    },
    "ok" : 1
    }


    结果新建集合
    repl_test:PRIMARY> show collections
    0917order_totals
    Analyse_consume

    db.accounting_center_orders.mapReduce(function(){emit(this.service_id,this.val)},function(key,values){return Array.sum(values)},{query:{create_timestamp:{$lt:1537200000,$gt:1537113600}}})


    mapReduce 需要指明结果的输出集合名

    repl_test:PRIMARY> db.accounting_center_orders.mapReduce(function(){emit(this.service_id,this.val)},function(key,values){return Array.sum(values)},{query:{create_timestamp:{$lt:1537200000,$gt:1537113600}}})
    2018-09-28T15:00:07.163+0800 E QUERY [main] TypeError: c.out is undefined :
    DBCollection.prototype.mapReduce@src/mongo/shell/collection.js:1401:1
    @(shell):1:1
     
     
    查询其他集合返回预期信息
     

    repl_test:PRIMARY> db.0917order_totals_b.find()
    2018-09-28T15:16:25.627+0800 E QUERY [main] SyntaxError: identifier starts immediately after numeric literal @(shell):1:2

    2节点主备复制集


    [root@e ~]# cat /usr/local/mongodb/conf/mongod.conf
    bind_ip=10.14.14.12
    port=27017
    dbpath=/mnt/mongodb_data/data
    logpath=/mnt/mongodb_data/log/mongod.log
    pidfilepath=/usr/local/mongodb/mongo.pid
    fork=true
    logappend=true
    shardsvr=true
    directoryperdb=true
    replSet=repl_test
    keyFile=/usr/local/mongodb/conf/keyFile
    [root@e ~]#

    删除集合报同样错误

    repl_test:PRIMARY> db.0917order_totals.drop()
    2018-09-28T15:27:20.825+0800 E QUERY [main] SyntaxError: identifier starts immediately after numeric literal @(shell):1:2
    repl_test:PRIMARY>

     变换命名

    repl_test:PRIMARY> db.accounting_center_orders.mapReduce(function(){emit(this.service_id,this.val)},function(key,values){return Array.sum(values)},{query:{create_timestamp:{$lt:1537200000,$gt:1537113600}},out:"order_totalsMR"})
    {
    "result" : "order_totalsMR",
    "timeMillis" : 905,
    "counts" : {
    "input" : 78010,
    "emit" : 78010,
    "reduce" : 2828,
    "output" : 14
    },
    "ok" : 1
    }
    repl_test:PRIMARY> show collections

    order_totalsMR

    repl_test:PRIMARY> db.order_totalsMR.find()
    { "_id" : 0, "value" : 2472975 }
    { "_id" : 1, "value" : -316177.25 }
    { "_id" : 2, "value" : -211655 }
    { "_id" : 4, "value" : -189450 }
    { "_id" : 7, "value" : -7750 }
    { "_id" : 8, "value" : -194385 }
    { "_id" : 10, "value" : -10000 }
    { "_id" : 11, "value" : -184954.40000000005 }
    { "_id" : 13, "value" : -35050 }
    { "_id" : 16, "value" : -30000 }
    { "_id" : 19, "value" : -6000 }
    { "_id" : 20, "value" : -1329.9999999999998 }
    { "_id" : 21, "value" : -361475 }
    { "_id" : 22, "value" : -600 }
    repl_test:PRIMARY>

    得到预期输入 

     【 集合命名规范 :英文字母开头】

     
     
     
     
  • 相关阅读:
    多线程的几种实现方法详解
    Java线程编程中isAlive()和join()的使用详解
    MyEclipse在不同编辑面间快速切换
    MyEclipse中设置代码块快捷键
    MyEclipse设置文件编码
    Oracle安装后遇到错误:The Network Adapter could not establish the connection
    Java中的Runtime类
    Java中接口的特点
    Java中三种常见的注释(注解) Annotation
    Java中的泛型
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9718790.html
Copyright © 2011-2022 走看看