2016-09-23 7 views
1

.netドライバを使用して、サブコレクションの要素のプロパティが所有者のプロパティと等しいかどうかを確認するクエリを作成します。 は、それが明確に私がmongo .netドライバが間違ったクエリを生成する

たちは@子供人員@コレクション持っていると言うことができますし、私たちは同じ姓を持つすべての人材を見つけたいの例を与えるようにするには、その彼の子供

var query = db.GetCollection("personnels") 
       .AsQueryable() 
       .Select(person => person.Children.Any(child => child.FirstName == person.FirstName)); 

このクエリは

db.getCollection('personnels').aggregate([ 
    { 
     "$project": { 
      "__fld0": { 
       "$anyElementTrue": { 
        "$map": { 
         "input": "$Children", 
         "as": "child", 
         "in": { 
          "$eq": [ 
           "$$child.FirstName", 
           "$$child.FirstName" 
          ] 
         } 
        } 
       } 
      }, 
      "_id": 0 
     } 
    } 
]) 

に翻訳されますが、何かが間違っています代わりに、この「$eq": [ "$$child.FirstName","$$child.FirstName" ],

クエリの は、私が間違っているのを教え

"$eq": [ "$FirstName","$$child.FirstName" ] 

に翻訳されなければなりませんか?

答えて

0

FilterDefinitionBuilder型を使用して情報を照会することをお勧めします。 LINQは便利ですが、LINQを使用するともっと複雑なクエリが発生することがわかりました。詳細については、このリンクを参照してください。以下はhttp://mongodb.github.io/mongo-csharp-driver/2.2/reference/driver/definitions/

フィルタを作成する方法の一例だろう...

var builder = Builders<BsonDocument>.Filter; 
var filter = builder.Eq("x", 10) & builder.Lt("y", 20); 

は、この情報がお役に立てば幸い!

+0

MongoDriverライブラリが必要です...パッケージマネージャシェルの次のコマンドから、パッケージをプロジェクトに追加することができます。インストールパッケージMongoDB.Driver –

関連する問題