为了研究Android服务,我写了一个测试程序,在屏幕上有三个按钮"绑定服务","解绑服务"和"发送回显".单击时,他们使用bindService()
,unbindService()
以及Messenger
与该服务进行通信.
这是服务代码:
public class MessengerService extends Service {
private final Messenger mMessenger = new Messenger(new TempHandler());
private class TempHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_SAY_HELLO:
Toast.makeText(getApplicationContext(), "Hi, there.", Toast.LENGTH_SHORT).show();
break;
case MSG_SAY_GOODBYE:
Toast.makeText(getApplicationContext(), "See you next time.", Toast.LENGTH_SHORT).show();
break;
case MSG_ECHO:
Toast.makeText(getApplicationContext(), "Received " + msg.arg1 + " from client.", Toast.LENGTH_SHORT).show();
Messenger replyMessenger = msg.replyTo;
Message replyMsg = Message.obtain(null, MSG_ECHO, msg.arg1, 0);
try {
replyMessenger.send(replyMsg);
} …
Run Code Online (Sandbox Code Playgroud) 在mongodb中,我具有如下数据结构:
{
"data" : [
{
"car" : [
{
"model" : "aaa",
},
{
"model" : "bbb",
},
{
"model" : "ccc",
}
],
"user" : {
"id" : "123"
}
}
],
}
Run Code Online (Sandbox Code Playgroud)
我想对汽车模型领域进行分组和计数。因此,首先我尝试了如下展开方法:
.aggregate([
{ $project: {"data.car.model":1, "data.user.id":1} },
{ $unwind: {
path: "$data.car",
preserveNullAndEmptyArrays: true
} },
{ $group: {
_id: "$data.car.model",
count: { $sum: 1 }
} }
])
Run Code Online (Sandbox Code Playgroud)
但是结果是:
{
"_id" : [ ["aaa", "bbb", "ccc"] ],
"count" : 1.0
}
Run Code Online (Sandbox Code Playgroud)
因为模型没有展开,所以这不是我想要的。我希望的结果是:
[{_id:"aaa",count:1}, {_id:"bbb",count:1}, …
Run Code Online (Sandbox Code Playgroud)