MongoDB集約(春)での$ WONIND -- spring フィールド と mongodb フィールド と spring-boot フィールド と spring-mongodb フィールド 関連 問題

$unwind in mongodb aggregation (Spring)












0
vote

問題

日本語

私は2つのコレクションを持っています: 会社:

<事前> <コード> { "_id" : "1", "company_code" : "A-111", "code_description" : "BGI", "out_company_code" : "A-111" }

原価センタ:

<事前> <コード> { "_id" : "2, "company_id" : "1", //Company id "home_cost_center" : "1111", "home_cost_center_description" : "Finance" }

下記のような結果に照会したいのですが:

<事前> <コード> { "_id" : "2, "company_id" : "1", "home_cost_center" : "1111", "home_cost_center_description" : "Finance", "company": { "_id" : "1", "company_code" : "A-111", "code_description" : "BGI", "out_company_code" : "A-111" } }

これを達成するために、このクエリ

を作成しました <事前> <コード> String queryWithCompanyCode = " { '$lookup': {" + " 'from': 'company'," + " 'let': { 'codeId': '$company_id' }," + " 'pipeline': [" + " { '$match': { '$expr': { '$eq': [{ '$toString': '$_id' }, '$$codeId'] }}}" + " ]," + " 'as': 'companyCode'" + " }}," + " {'$unwind': '$companyCode'}"; ObjectId objectId = new ObjectId(id); AggregationOperation operation = Aggregation.match( Criteria.where("_id").is(objectId) ); TypedAggregation<T> typedAggregation = Aggregation.newAggregation(Output.class, operation, new CustomAggregationOperation(queryWithCompanyCode)); T result = operations.aggregate(typedAggregation, CostCenter.class, Output.class).getUniqueMappedResult();

上記のクエリで、この結果を得ています。

<事前> <コード> { "_id" : "2, "company_id" : null, "home_cost_center" : null, "home_cost_center_description" : null, "company": { "_id" : "1", "company_code" : "A-111", "code_description" : "BGI", "out_company_code" : "A-111" } }

スプリング:2.1.10とMongoDBを使用しています:4.2.1。データベース内でこのクエリを実行するとうまく機能しますが、春には機能しませんが、ここで何が悪いのかを理解することはできません。

英語

I have two collections: Company:

{   "_id" : "1",    "company_code" : "A-111",    "code_description" : "BGI",    "out_company_code" : "A-111" } 

Cost center:

{    "_id" : "2,     "company_id" : "1", //Company id    "home_cost_center" : "1111",     "home_cost_center_description" : "Finance" } 

I wanted to have a query to result like below:

{   "_id" : "2,     "company_id" : "1",     "home_cost_center" : "1111",     "home_cost_center_description" : "Finance",    "company": {        "_id" : "1",         "company_code" : "A-111",         "code_description" : "BGI",         "out_company_code" : "A-111"    } } 

For achieving this, I created this query

String queryWithCompanyCode = "   { '$lookup': {" +         "    'from': 'company'," +         "    'let': { 'codeId': '$company_id' }," +         "    'pipeline': [" +         "      { '$match': { '$expr': { '$eq': [{ '$toString': '$_id' }, '$$codeId'] }}}" +         "    ]," +         "    'as': 'companyCode'" +         "  }}," +         "  {'$unwind': '$companyCode'}";  ObjectId objectId = new ObjectId(id);         AggregationOperation operation = Aggregation.match(             Criteria.where("_id").is(objectId)         );          TypedAggregation<T> typedAggregation = Aggregation.newAggregation(Output.class, operation, new CustomAggregationOperation(queryWithCompanyCode));         T result = operations.aggregate(typedAggregation, CostCenter.class, Output.class).getUniqueMappedResult(); 

With the above query I am getting this result:

{       "_id" : "2,         "company_id" : null,         "home_cost_center" : null,         "home_cost_center_description" : null,        "company": {            "_id" : "1",             "company_code" : "A-111",             "code_description" : "BGI",             "out_company_code" : "A-111"        }     } 

I am using Spring: 2.1.10 and mongodb: 4.2.1. It's strange that when I run this query in the database then it works fine but doesn't work in spring and I can't figure out what's wrong here.

</div
           
   
   

回答リスト


関連する質問

3  MongoDB集約:最後の要素なしで配列をプロジェクト  ( Mongodb aggregation project an array without the last element ) 
集約パイプラインの使用Springデータでは、ネストされた配列のドキュメントがあり、その最後の項目以外の配列を投影したいと思います。 たとえば、次のような各文書の場合: <事前> <コード> { "_id" : ObjectId("59ce411c27...

0  spring-boot-starter-data-mongodb-Reactive Settingキーストアパスワードx509を使用して接続するためのapplication.yml  ( Spring boot starter data mongodb reactive setting keystore password from applica ) 
Reactive Streamsを使用してMongoDBに接続するには、Mongo DBドライバは2つのJVMプロパティを設定します。 <コード> javax.net.ssl.keyStore <コード> javax.net.ssl.keyStorePas...

0  春のブーツMongodb @dbrefカスケードが働いていません  ( Spring boot mongodb dbref cascade not working ) 
参照オブジェクトに対してSpring Boot MongoDBカスケード操作に苦労しています。以下はMongoDB文書のスキーマクラスです。 ==ポスト <事前> <コード> @Getter @Setter @Document(collection="P...

1  Mongoで双方向参照を使用する場合の春のアプリケーション設計  ( Spring application design when using two way referencing in mongo ) 
私は2つのクラスの人と仕事を持っています。それは一対多の関係です:人はタスクのリストを持ち、タスクは人に属します。 私のアプリケーションには2つのビューがあります。そのうちの1つで、私はその人を見せる必要があり、各人に関連付ける必要があります。もう一つのもので...

0  MongoDB @Queryにパラメータを注入する方法  ( How to inject params to mongodb query ) 
このようなクエリがあります <事前> <コード> @Query(value = "{'statusHistories':{$elemMatch:{'status':{$in:['PROCESSABLE']}}},'created' : { '$gt' : { ...

0  リストや地図内をチェックするためのSpring MongoDB基準  ( Spring mongodb criteria to check inside a list or map ) 
文字列が内側にあるかどうかを確認する方法: <事前> <コード> Set<String> obAccountIDs = new HashSet<String>(); 私のユーザーモデル? はで、使用する正しいアプローチ方法ですか? 春mongo que...

3  コレクションで最大フィールド値を取得する方法  ( How to get max field value in collection ) 
Mongo DBの名前<コード> data のコレクションを持っています。 Spring Model Loolsの文書宣言: <事前> <コード> @Document(collection = "data") public class DataPoint ...

1  MongoDB DBObjectの日付条件よりも大きい  ( Greater than date condition in mongodb dbobject ) 
MongoDBオブジェクトはこののように見えます <事前> <コード> { "_id" : ObjectId("590acbe6125ad519801a4214"), "name" : "Dev", "duration" : NumberLong(30), ...

6  Spring Mongo QueryDSLクラスjava.time.localdatetimeのコーデックが見つかりません  ( Spring mongo querydsl cant find a codec for class java time localdatetime ) 
スプリングモンゴデータのRESTとQUERYDSL を使用 ドメイン:プロパティを持っています: <事前> <コード> @DateTimeFormat(iso = ISO.DATE_TIME) private LocalDateTime registe...

0  MongoDBクエリに1つの属性のみを返します  ( Return only one attribute in a mongodb query ) 
<事前> <コード> @Query("{'recibido' : null ,'activo' : true}") public List<Long> findEmpleadosPrlActivoRecibidoIsNull(); オブジェクト全体ではなく...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有