gpt4 book ai didi

java - MongoDB Java 驱动程序 - 在查找查询中使用存在投影

转载 作者:可可西里 更新时间:2023-11-01 09:20:27 24 4
gpt4 key购买 nike

我想获取所有不存在field download的文档

find{ "download" : {$exists: false}}

对于 Java,我找到了一个示例:

  BasicDBObject neQuery = new BasicDBObject();
neQuery.put("number", new BasicDBObject("$ne", 4));
DBCursor cursor = collection.find(neQuery);

while(cursor.hasNext()) {
System.out.println(cursor.next());
}

我的改编是

      BasicDBObject field = new BasicDBObject();
field.put("entities.media", 1);
field.put("download", new BasicDBObject("$exists",false));
System.out.println("Start Find");
DBCursor cursor = collection.find(query,field);
System.out.println("End Find Start Loop ALL 100k");
int i = 1;
while(cursor.hasNext())

Exists 行不工作:

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: com.mongodb.MongoException: Unsupported projection option: $exists
at com.mongodb.MongoException.parse(MongoException.java:82)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:314)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:295)
at com.mongodb.DBCursor._check(DBCursor.java:368)
at com.mongodb.DBCursor._hasNext(DBCursor.java:459)
at com.mongodb.DBCursor.hasNext(DBCursor.java:484)
at ImgToDisk.main(ImgToDisk.java:61)
... 5 more

现在不知道哪个是正确的适应,因为我的查询在 shell 和 UMongo 中工作,转移到 java 似乎不太容易看到。

最佳答案

你用

collection.find(query,field);

作为 find 方法的第二个参数的 DBObject 用于指示要返回结果文档的哪些属性。它有助于减少网络负载。

在您的示例中,您尝试将 $exists 子句放入 field DBObject。那行不通的。第二个参数对象的属性值只能为1(包含该属性)或0(不包含)。

将其放入第一个名为 query 的 DBObject 中。

另见 herehere

关于java - MongoDB Java 驱动程序 - 在查找查询中使用存在投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15902287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com