我已经创建了一些文档,并设法进行了一些简单的查询,但我无法创建一个查询来查找只存在字段的文档.

例如,假设这是一个文档:

{  "profile_sidebar_border_color" : "D9B17E" , 
   "name" : "???? ???????" , "default_profile" : false , 
   "show_all_inline_media" : true , "otherInfo":["text":"sometext", "value":123]}

现在我想要一个查询,它将带出otherInfo中文本包含内容的所有文档.

如果没有文本,那么otherInfo将是这样的:"otherInfo":[]

所以我想判断otherInfotext字段的存在性.

我怎样才能做到这一点?

推荐答案

可以将$exists运算符与.符号结合使用.mongo shell中的裸查询应该如下所示:

db.yourcollection.find({ 'otherInfo.text' : { '$exists' : true }})

Java中的测试用例可以如下所示:

    BasicDBObject dbo = new BasicDBObject();
    dbo.put("name", "first");
    collection.insert(dbo);

    dbo.put("_id", null);
    dbo.put("name", "second");
    dbo.put("otherInfo", new BasicDBObject("text", "sometext"));
    collection.insert(dbo);

    DBObject query = new BasicDBObject("otherInfo.text", new BasicDBObject("$exists", true));
    DBCursor result = collection.find(query);
    System.out.println(result.size());
    System.out.println(result.iterator().next());

输出:

1
{ "_id" : { "$oid" : "4f809e72764d280cf6ee6099"} , "name" : "second" , "otherInfo" : { "text" : "sometext"}}

Mongodb相关问答推荐

获取文档字段名并将其作为嵌套字段添加到聚合中

MongoDB 聚合使用 $match 和 $expr 和数组

如何替换mongodb中的动态键?

Mongodb按值分组并计算出现次数

解析命令行时出错:unrecognized option --rest

在一个变量上运行的 Node JS 中使用正则表达式的 Mongo 查询

如何构建我只需要打开一次 mongodb 连接的快速应用程序?

如何检索 MongoDb 集合验证器规则?

MongoDB 的 BinData(0, "e8MEnzZoFyMmD7WSHdNrFJyEk8M=") 中的0是什么意思?

具有多个字段的mongodb文本搜索

嵌套数组内的Mongodb增量值

Mongo Schema-less集合和 C#

使用 Node.js 将许多记录插入 Mongodb 的正确方法

try 启用 Mongo DB 身份验证时发生 TypeError

如何仅通过一次调用将一组对象保存到mongoose数据库?

Mongodb - 如何在多个字段中查找字符串?

如何在mongoose的嵌套填充中 Select 特定字段

show dbs 给出Not Authorized to execute command错误

MongoError:Can't extract geo keys from object

MongoError:failed to connect to server [localhost:27017] on first connect