2017-03-17 19 views
0

強く型付けされたネストされたインデックスをC#ドライバを使用して作成する方法はありますか?MongoDBドライバC#強く型付けされたネストされたインデックス

私は、インデックスのこの種をしたい:以下の作品db.foos.ensureIndex({'Bars.Baz': 1});

public class Foo { 
    public Something() { } 

    public List<Bar> Bars { get;set; } 
} 

public class Bar { 
    public string Baz { get; set; } 
} 

var collection = database.GetCollection<Foo>("foos"); 
collection.Indexes.CreateOne(Builder<Foo>.IndexKeys.Ascending(/*What goes here?*/)); 

が、 "Bars.0.Baz" のインデックスを作成:全く

collection.Indexes.CreateOne(Builders<Foo>.IndexKeys.Ascending(x => x.Bars[0].Baz)); 

このdoesntの仕事をシリアライゼーションエラーが発生する

collection.Indexes.CreateOne(Builders<Foo>.IndexKeys.Ascending(x => x.Bars.Select(y => y.Baz))); 

これは、しかし、働くそれらのどれもが

MongoDBのドライバのバージョンが何かを2.4.3.23

答えて

0

てみている「Bars.Baz」のインデックスを追加したいん「バズ」

collection.Indexes.CreateOne(Builders<Foo>.IndexKeys.Ascending(x => x.Bars.First().Baz)); 

のインデックスを追加します等:

+1

var collection = database.GetCollection<Foo>("foos"); collection.Indexes.CreateOne(Builder<Foo>.IndexKeys.Ascending(f=> f.Bars.Select(str=> str.Baz))); 
'のSystem.InvalidOperationException:X => x.Bars.Select(Y => y.Baz).' – Mardoxx

+0

厥奇妙...ためのシリアル化情報を判別できません私はそれを次のように実行しようとしました: var collection = _FilesDb.GetCollection ( "foos"); collection.Indexes.CreateOneAsync(Builders .IndexKeys.Ascending(x => x.Bars.Select(y => y.Baz))); キーを作成しました。 私はyoueエラーをチェックして、この発見:私はあなたの本当の推測 http://stackoverflow.com/questions/28039274/mongodb-unable-to-determine-the-serialization-information-for-the-expression-err をオブジェクトには問題があります...これをチェックしてみてください。 – AvrahamL

+0

mongodbドライバのどのバージョンを使用していますが、私のものはlinq select文が好きではないようです。 – Mardoxx

関連する問題