1

Spring-data-mongodb 1.1.1.RELEASE で MongoOperations インターフェースを使用しており、「id」をセレクターとして使用するクエリは null を返します。Query.query(Criteria.where("id").is("5X")))

ただし、Java ドライバーで Mongo クラスを使用してクエリを実行すると、期待どおりに動作します。すなわち:dbCollection.find(Query.query(Criteria.where("id").is("5X")).getQueryObject()));

私の調査によると、これは MongoOperations インターフェイスで機能し、セレクター「id」は「_id」セレクターと競合しないはずです。誰かがこの問題に遭遇しましたか、または誰かが何が起こっているのか知っていますか?

4

2 に答える 2

3

その理由は、ないidからですが、あります_id- 試してみてください。mongodb では、PK のデフォルト フィールドに「_id」という名前が付けられます。

ID だけでドキュメントを検索する必要がある場合は、findById(id)Spring を使用している場合は mongoTemplate のようなものを使用するか、そのようなことをしてみませんか:

DBCollection coll = db.getCollection(getCollectionName());
DBObject searchById = new BasicDBObject("_id", new ObjectId(idString));
DBObject found = coll.findOne(searchById);

春のモンゴで試してみてください:

YourObject obj= mongoTemplate.findOne(new Query(Criteria.where("id").is("5X")),  YourObject.class, "yourCollectionName");
于 2013-03-05T16:16:00.477 に答える
0

ドキュメント ID ではない「id」という名前のフィールドは好きではありません。@Field("id") アノテーションを使用してクラスにマップします。

import org.springframework.data.mongodb.core.mapping.Field;
...
@Field("id") 
public int id;
于 2017-03-11T08:26:59.080 に答える