小编And*_*zzi的帖子

在mongo聚合中将ObjectID转换为String

我现在正处于这种情况:我有一个集合X:

{
  _id:ObjectId('56edbb4d5f084a51131dd4c6'),
  userRef:ObjectId('56edbb4d5f084a51131dd4c6'),
  serialNumber:'A123123',
  ...
}
Run Code Online (Sandbox Code Playgroud)

我需要聚合所有文档,用userRef + serialNumber对它们进行分组,所以我试图像这样使用concat:

$group: {
        _id: {
            '$concat': ['$userRef','-','$serialNumber']
        },
       ...
Run Code Online (Sandbox Code Playgroud)

所以基本上在我在MongoDB中的聚合中,我需要通过ObjectId和字符串的串联来分组文档.但是,似乎$ concat只接受字符串作为参数:

uncaught exception: aggregate failed: {

    "errmsg" : "exception: $concat only supports strings, not OID",
    "code" : 16702,
    "ok" : 0
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将ObjectId转换为聚合表达式中的String?

编辑:

这个问题是相关的,但我的解决方案不适合我的问题.(特别是因为我在聚合期间不能使用ObjectId.toString())

实际上我在Mongo的文档中找不到任何ObjectId().toString()操作,但我想知道在这种情况下是否有任何棘手的事情可以做.

mongoose mongodb mongodb-query aggregation-framework robo3t

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

Java BufferedReader在循环之前检查循环的下一行

我正在解析.cvs文件.对于cvs的每一行,我使用解析的值创建一个对象,并将它们放入一个集合中.

在将对象放入地图并循环到下一个之前,我需要检查下一个cvs的行是否与实际对象相同,但具有不同的特定属性值.

为此,我需要检查缓冲区的下一行,但是将循环的缓冲区保持在相同的位置.

例如:

BufferedReader input  = new BufferedReader(new InputStreamReader(new FileInputStream(file),"ISO-8859-1"));
String line = null;

while ((line = input.readLine()) != null) {
    do something

    while ((nextline = input.readLine()) != null) { //now I have to check the next lines
       //I do something with the next lines. and then break.
    }
    do something else and continue the first loop.
}
Run Code Online (Sandbox Code Playgroud)

java loops bufferedreader

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

BadPaddingException:给定最终块未正确填充

我有一个带有DES/ECB/PKCS5Padding的私钥文件(由一个秘密短语生成的56位DES密钥),我想解密它.我不知道为什么,但每次我尝试decript,我的密码类的方法doFinal抛出这个错误:

javax.crypto.BadPaddingException:给出com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)的com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)的最终块没有正确填充.sun.crypto.provider.DESCipher.engineDoFinal(DashoA13*..)在javax.crypto.Cipher.doFinal(DashoA13*..)at ...

这是我的代码:

public static PrivateKey readPrivateKeyFromFile(File file, String chaveSecreta) {
    try {
        SecureRandom r = new SecureRandom(chaveSecreta.getBytes());
        KeyGenerator keyGen = KeyGenerator.getInstance("DES");
        keyGen.init(56, r);
        Key key = keyGen.generateKey();

        byte[] privateKeyBytes = decryptPKFile(file, key);

        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
        PrivateKey privateKey = null;
        try {
            privateKey = keyFactory.generatePrivate(privateKeySpec);
        } catch (InvalidKeySpecException e) {
            JOptionPane.showMessageDialog(null, "Erro 01, tente mais tarde");
        }
        return privateKey;
    } catch (NoSuchAlgorithmException e) {
        JOptionPane.showMessageDialog(null, "Erro 02, tente mais tarde");
    }
    return null; …
Run Code Online (Sandbox Code Playgroud)

java encryption

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

选择distinct count cloudant/couchdb

我正在使用Cloudant开始一个项目.这是一个简单的日志记录系统,因此我可以跟踪我的应用程序的使用情况.

我的文档看起来像这样:

{
app:'应用名称',
输入:'页面视图| 登录| 等等.',
所有者:'email_of_the_user',
设备:'iphone | android | 等等.',
日期:'yyyy-mm-dd'
}

我试图做一些地图缩减和分面搜索,但到目前为止找不到我想要的结果.

我想计算由同一所有者,日期(yyyy-mm-dd)和app分组的不同文档的数量.

[例如,如果同一个人在同一天登录应用程序两次或20次,则只会计算一次.我想计算每天有多少单个用户使用应用程序,无论日志类型或他使用的设备是什么.

如果它是SQL,假设文档的每个键都是一列,我会查询如下:

SELECT app,date,count(*)FROM LOGS group by date,owner,app

蚂蚁的结果将是这样的:

'App1','2015-06-01',
200'App1','2015-06-02',
232'App2','2015-06-01',
142'App2','2015-06-02' ,120

如何使用Cloudant/CouchDB获得相同的结果?

lucene couchdb mapreduce nosql cloudant

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

将包含数组数组的字符串转换为JSON对象

我有一个API,它返回一个包含数组数组的字符串.数组包含字符串,如下所示:

"[[ '猫', '老鼠'],[ '鸭', '鱼'],[ '狮子', '斑马']]"

我想将其转换为JSON对象.

我试过JSON.parse,但它给了我一个错误

Blockquote [['+00:00(Etc/GMT)','+ 00:00(Etc/GMT)'],['+ 03:00(欧洲/加里宁格勒)','+ 03:0 ^ SyntaxError:意外令牌'

我试图变成一个对象的字符串就是这个:

"[['+00:00 (Etc/GMT)','+00:00 (Etc/GMT)'],['+03:00 (Europe/Kaliningrad)','+03:00 (Europe/Kaliningrad)'],['-01:00 (Etc/GMT+1)','-01:00 (Etc/GMT+1)'],['AKST (America/Anchorage)','AKST (America/Anchorage)'],['ART (America/Argentina/Buenos_Aires)','ART (America/Argentina/Buenos_Aires)'],['AST (America/Puerto_Rico)','AST (America/Puerto_Rico)'],['AST (Asia/Baghdad)','AST (Asia/Baghdad)'],['AST (Atlantic/Bermuda)','AST (Atlantic/Bermuda)'],['BRT (America/Sao_Paulo)','BRT (America/Sao_Paulo)'],['CET (CET)','CET (CET)'],['CET (Europe/Amsterdam)','CET (Europe/Amsterdam)'],['CET (Europe/Brussels)','CET (Europe/Brussels)'],['CET (Europe/Budapest)','CET (Europe/Budapest)'],['CET (Europe/Madrid)','CET (Europe/Madrid)'],['CET (Europe/Oslo)','CET (Europe/Oslo)'],['CET (Europe/Paris)','CET (Europe/Paris)'],['CET (Europe/Prague)','CET (Europe/Prague)'],['CET (Europe/Vienna)','CET (Europe/Vienna)'],['CET (Europe/Warsaw)','CET (Europe/Warsaw)'],['CET (Europe/Zurich)','CET (Europe/Zurich)'],['CLST (America/Santiago)','CLST (America/Santiago)'],['COT (America/Bogota)','COT (America/Bogota)'],['CST (America/Chicago)','CST (America/Chicago)'],['CST (America/Costa_Rica)','CST (America/Costa_Rica)'],['CST (America/Mexico_City)','CST (America/Mexico_City)'],['CST (Asia/Shanghai)','CST (Asia/Shanghai)'],['CST (Asia/Taipei)','CST (Asia/Taipei)'],['CST (Australia/Adelaide)','CST (Australia/Adelaide)'],['EAT (Africa/Nairobi)','EAT (Africa/Nairobi)'],['EET (EET)','EET (EET)'],['EET (Europe/Istanbul)','EET …
Run Code Online (Sandbox Code Playgroud)

javascript parsing json node.js

4
推荐指数
1
解决办法
334
查看次数