2016-09-06 3 views
1

私はMongoDBを使ってc#で簡単なWebサービスを開発しています。私は、C#でリスト<T>のmongodbクエリを適用するには?

"_id" : ObjectId("57ce7aa1c54ec61774f0a91d"), 
"MobileNumber" : "9652365485", 
"Password" : "aaaaaa", 
"Countrycode" : "+91", 
"Email" : "[email protected]", 
"CurrentDate" : ISODate("2016-09-06T08:13:22.859Z"), 
"ModifiedDate" : ISODate("2016-09-06T08:13:23.211Z"), 
"Location" : { 
     "type" : "Point", 
     "coordinates" : [ 
       23.464464, 
       -73.326464 
     ] 
}, 
"FriendList" : [ 
     "57ce7aa1c54ec61774f0a91d", 
     "57ce7aa1c54ec61774f0a91d" 
], 

は今、私はこれを友達リストからすべてのユーザーIDを取得し、このようなユーザーのリストを作成しています、私のmongoDocumentで私は(ちょうど例)以下のようにユーザIDのリストを持って、一箇所にはまり込みます上記の方法
 List<Users> friendList = new List<Users>(); 
    friendList = FriendListById(UserId); //This method will return all my friends which is in "FriendList" array in document. 

public List<Users> FriendListById(string userId) 
     { 
      MongoCollection userCollection = db.MongoDatabase.GetCollection("UserMaster"); 
      List<Users> userList = new List<Users>(); 
      string[] friendIdList; 


        var loginUser = userCollection.FindAs<Users>(Query.EQ("_id", ObjectId.Parse(userId))); 
        if (loginUser != null) 
        { 
         friendIdList = loginUser.FirstOrDefault().FriendList; 

         for (int i = 0; i < friendIdList.Length; i++) 
         { 
          Users user = userCollection.FindOneAs<Users>(Query.EQ("_id", ObjectId.Parse(friendIdList[i]))); 
          userList.Add(user); 
         } 

         return userList; 
        } 
        else 
        { 
         return userList; 
        } 
       } 
     } 

(指定されたコレクションの例上記の通り、私はちょうど店Idをこの友達リストで。)私のFriendListにいるユーザーの詳細を返し、それは私の友人を返しますので、私はこの方法でログインユーザIDを渡しますそのユーザーのリスト

いいえこのリストのすべての友人の詳細(このすべての友人(ユーザー)も同じコレクションにあります)。

ここで、mongoクエリを使用してこのFriendListから特定のユーザー(近くの友人を使用した検索、特定の名前のクエリなどを使用する検索など)を検索します。私にこれを解決してください。

ありがとうございます。

+0

私はまだここで質問を理解するとは思わない。あなたはユーザーを取得し、彼の友人のユーザーIDを取得しました。各友人を取得し、配列で追加して戻った。 私はこのセグメントを理解できませんでした - >「今、特定のユーザーを探したい(近くの友達を使用して特定の名前クエリなどを使用して検索したい)」 Idではなく名前でユーザーを検索しますか?それは不明確です。 –

+0

@Prateek、私は一般的なリストの形式でfrinedListを持っています。このリストにはN人のユーザーがいますので、このリストからmongoQueryを使用している複数のユーザーを探したいと思います。要するに、このリストにmongo Queryを適用したいと思います。私のポイントを持っていますか? –

+0

あなたは既にリストを持っています。この時点で、LINQを使用してクエリを実行できます。なぜ具体的にMongoQueryが必要なのでしょうか? –

答えて

0

あなたはすでに、単一のLINQのは大丈夫だと思う項目をフェッチしている場合:誰かが誰かの友人であるかどうかを検索するMongoDBのクエリのために行きたい場合は、ユーザーIDを探す必要が

List<Users> friendList = new List<Users>(); 
friendList = friendList.FirstOrDefault(x=>x.Id=="yourId"); 

を一部のユーザーのFriendListに:

var filter = Builders<Users>.Filter.ElemMatch(x => x.FriendList, x => x == "your_id"); 
var res = await collection.Find(filter).ToListAsync(); 

次に、リストresの周りに行くと、お使いのユーザーのコレクションでそれらのユーザーを検索します。

しかし、もしあなたがMongooseにpopulate()のようなものを望むのであれば、私は実際に.netドライバの公式の実装がまだあるとは思わない。

+0

素早い応答のために@Prateekに感謝します。私はあなたが正しく得ることができないと思う、私はより多くの理解のためにこの質問を編集する。一度それをチェックし、私にそれを解決してください。 –

+0

ありがとう、探しています。 –

関連する問題