日期:2014-05-16  浏览次数:20401 次

mongoDB中的null值问题

假设mongoDB中有一个collection,名称为foo,里面有4条记录:

?

{x:"1", y:"a"}
{x:"2", y:"b"}
{x:"3", y:null}
{x:"4"}

?

那么,用null作为查询条件,进行查询:

?

FooDao dao = new FooDao();
List<Foo> list = dao.query().is("y", null).results();

?

查询结果是:

?

{x:"3", y:null}
{x:"4"}
?

有点出乎意料,是不是?

?

其实,如果数据是通过BuguMongo保存进mongoDB中的,那么值为null的字段根本不会保存,即:不会存在 {x:"3", y:null}这样的记录,而是被保存成了{x:"3"}

?

在上面的例子中,如果想查询出{x:"4"}这样的记录,那么可以这样写:

?

List<Foo> list = dao.query().notExistsField("y").results();
?

?