Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Вы можете попробовать подсчитать предметы в еде.
db.collection.aggregate([{$project: {numberOfFoos: { $size: "$foos" } } } ] )
В MongoDB 2.6 у Aggregation Framework есть новый массив $size
, который вы можете использовать:
> db.mycollection.insert({'foo':[1,2,3,4]})
> db.mycollection.insert({'foo':[5,6,7]})
> db.mycollection.aggregate({$project: { count: { $size:"$foo" }}})
{ "_id" : ObjectId("5314b5c360477752b449eedf"), "count" : 4 }
{ "_id" : ObjectId("5314b5c860477752b449eee0"), "count" : 3 }
$group
этап, который суммирует размеры массива: db.mycollection.aggregate({$group: { _id: null, totalSize: { $sum: { $size: "$foo"}} }})
.
– Stennie
9 March 2018 в 22:43
, если вы находитесь в последней версии mongo (2.2 и более поздней), вы можете использовать структуру агрегации.
db.mycollection.aggregate([
{$unwind: '$foo'},
{$group: {_id: '$_id', 'sum': { $sum: 1}}},
{$group: {_id: null, total_sum: {'$sum': '$sum'}}}
])
, которая даст вам общую foo
s вашей коллекции.
Опускание последнего group
будет агрегировать результаты на запись.