我现在正处于这种情况:我有一个集合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()操作,但我想知道在这种情况下是否有任何棘手的事情可以做.
我正在解析.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) 我有一个带有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) 我正在使用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获得相同的结果?
我有一个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)