2015-05-18 51 views
0

我有一个Issue实体,其中包含一个名为AssignedTo的Guid列表。对于一个ID,我需要与AssignedTo列表/阵列内部的ID检索所有问题MongoDB 2 - 没有硬编码名称的查询数组

到目前为止,我已经成功与这样:

var filter = Builders<Issue>.Filter.Eq("AssignedTo", id.ToString()); 
return await Collection.Find(filter).ToListAsync(); 

,但我不想铁杆AssignedTo查询。 p => p.AssignedTo不起作用,我也尝试过。

另外,如何告诉BsonClassMap将该列表注册为字符串列表而不是GUIDS?我知道这个:

x.GetMemberMap(p => p.AssignedBy).SetSerializer(new GuidSerializer(BsonType.String)); 

但我如何做它的名单?

我为C#使用最新的MongoDB驱动程序。 (2.0)

回答

2

您正在寻找AnyEq方法。看到文档在这里:http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/definitions/#array-operators

var filter = Builders<Issue>.Filter.AnyEq(x => x.AssignedTo, id.ToString()); 
+0

谢谢,它的工作,但没有.ToString()。但我如何序列化这样插入字符串而不是guid? – raresm

+0

第一个问题:为什么要将它们存储为字符串?字符串将占用更多的空间,将它们存储为Guid。 第二:你需要设置列表而不是项目的序列化程序。不幸的是,这个名字很糟糕。 new ImpliedImplementationInterfaceSerializer >(entitySerializer); –