MongoDB-使用Linq对子文档进行条件设置
我正在使用mongo csharp驱动程序查询我的mongo实体。 我在Mongo中存储了以下对象:MongoDB-使用Linq对子文档进行条件设置,linq,mongodb,conditional-statements,documents,Linq,Mongodb,Conditional Statements,Documents,我正在使用mongo csharp驱动程序查询我的mongo实体。 我在Mongo中存储了以下对象: public class Table { public int Id { get; private set; } public string Description{ get; private set; } public List<Player> Players { get; private set; } public Table()
public class Table
{
public int Id { get; private set; }
public string Description{ get; private set; }
public List<Player> Players { get; private set; }
public Table()
{
}
}
public class Player
{
public int Id { get; private set; }
public string Username{ get; private set; }
public Player()
{
}
}
公共类表
{
public int Id{get;private set;}
公共字符串说明{get;private set;}
公共列表玩家{get;private set;}
公共表()
{
}
}
公开课选手
{
public int Id{get;private set;}
公共字符串用户名{get;private set;}
公共玩家()
{
}
}
当我尝试按id或描述查询“Table”对象时,我会得到相应的结果,但当我尝试按播放器列表查询时,我会得到null:
// Works ok
var tab1 = mongo.GetCollection<Table>().Where(g => g.Description == "Test");
// Always return null, although should return the same result
var tab2 = mongo.GetCollection<Table>().Where(g => g.Players.Count > 90).FirstOrDefault();
//工作正常
var tab1=mongo.GetCollection(),其中(g=>g.Description==“Test”);
//始终返回null,但应返回相同的结果
var tab2=mongo.GetCollection().Where(g=>g.Players.Count>90.FirstOrDefault();
我错过了什么?
谢谢
Nir。问题是,它被翻译成了
从“链接的高级查询”页面可以看到:
“不能使用$size查找大小范围(例如:数组)
具有超过1个元素)
这里的计数是多少?只检索有一定数量玩家的表。明白了。因此,如果我明白了这一点,为了实现这一点,我必须在“Table”对象中为“PlayersCount”添加一个额外的属性,并查询它。这是可接受的解决方法吗-这在Mongo中被视为一个bug吗?你对它的理解是正确的,这不是Mongo中的bug-这只是$size的工作方式。