質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Q&A

0回答

1971閲覧

MongoDBで深い階層のキーの値が条件と一致する場合の同じ階層の指定キーの値、および親(一つ上の)の指定キーの値を得る方法

chin

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

0グッド

0クリップ

投稿2017/09/21 12:49

MongoDB V3.4.6を使っています。c#からデータベースにアクセスしています
ネストされたデータ構成で、深い位置にあるキーの値が条件と一致する場合のレコード(MongoDBでいうと何というのでしょう?)を検索し、検索された値と同じ深さにある別のキー(my_id)の値をとってきたいと思っています。C#でどのように記述したらいいかわからず困っています。

sql文で書くと
select ps_id from table where x=0.69;
としたmy_idをしりたいです。

データ構造は、以下です
{ "_id" : ObjectId("59b7e31a43faed2f58c306c0"), "id" : 0, "type" : 10, "color" : 0, "thema" : 0,
"tops" : [{ "top_id" : 1, "p" :
[{ "ps_id" : 2, "x" : 0.69, "y" : 2.75, "z" : 12.46 },
{ "pe_id" : 3, "x" : 0.93, "y" : 2.75, "z" : 12.47 }] },
{ "top_id" : 4, "points" :
[{ "ps_id" : 5, "x" : 0.93, "y" : 2.75, "z" : 12.47 },
{ "pe_id" : 6, "x" : 1.5, "y" : 2.75, "z" : 12.49 }] },
{ "top_id" : 7, "points" :
[{ "ps_id" : 8, "x" : 1.5, "y" : 2.75, "z" : 12.49 },
{ "pe_id" : 9, "x" : 2.05, "y" : 2.75, "z" : 12.50 }] },
{ "top_id" : 10, "points" :
[{ "ps_id" : 11, "x" : 2.05, "y" : 2.75, "z" : 12.50 },
{ "pe_id" : 12, "x" : 2.75, "y" : 2.75, "z" : 12.53 }] }]}

やってみたこと
1.var filter = Builders<BsonDocument>.Filter.Eq("lines.points.x", 0.69);
var projection =
Builders<BsonDocument>.Projection.Include("lines.points.top_id").Include("lines.points.ps_id").Include("lines.points.pe_id");
var resultProjection = collection.Find<BsonDocument>
(filter).Project(projection).ToList();

------->結果
{ "_id" : ObjectId("59b7e31a43faed2f58c306c0"), "tops" :
[{ "top_id" : 1, "points" :
[{ "ps_id" : 2 }, { "pe_id" : 3 }] },
{ "top_id" : 4, "points" :
[{ "ps_id" : 5 }, { "pe_id" : 6 }] },
{ "top_id" : 7, "points" :
[{ "ps_id" : 8 }, { "pe_id" : 9 }] },
{ "top_id" : 10, "points" :
[{ "ps_id" : 11 }, { "pe_id" : 12 }] }]}

とりたかったのは、
ps_id = 2
pe_id = 3
および
top_id = 1

方法を教えていただけないでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問