【问题标题】:Mongo query to get childrenMongo查询获取孩子
【发布时间】:2012-02-29 05:58:32
【问题描述】:

我正在使用流利的 mongo。

我有一个实体

public class SomeList
{
        public List<ItemLike> Likes { get; set; }
        public List<ItemComment> Comments { get; set; }
        public List<ListItem> ListItems { get; set; }
}

ListItem 是另一个实体

public class ListItem 
{
        pub string ListItemId { get; set; }
        public List<ItemComment> CommentsList { get; set; }
        public List<Photo> ItemPhotos { get; set; }
}

所以主实体 SomeList 有 List,实体 ListItem 也有 List。

我想要一个 mongo 查询来从 ListItem 中获取列表。

我正在使用以下查询

var myCollection = GetMongoDatabase().GetCollection<SomeList>("SomeLists");
var list = myCollection.Find(Query.EQ("ListItems.ListItemId", listItemId)).SetFields(Fields.Slice("ListItems.LikesList", 0)).SingleOrDefault();

ListItem listItem = list.ListItems.Where(x => x.ListItemId == listItemId).SingleOrDefault();
items = listItem.CommentsList;

当我执行 Query.EQ(“ListItems.ListItemId”, listItemId) 时,它给出了主 SomeList 实体。 我再次在下一行应用 where 子句。我不想要。

【问题讨论】:

    标签: mongodb syntax fluent fluent-mongo


    【解决方案1】:

    所以你在这里得到了列表中返回的主要 SomeList 集合?

    var list = myCollection.Find(Query.EQ("ListItems.ListItemId", listItemId))
                 .SetFields(Fields.Slice("ListItems.LikesList", 0)).SingleOrDefault();
    

    如果您从中删除 SingleOrDefault() 调用,您会得到什么?

    【讨论】:

    • 即使这样它也给出了主要实体。
    • 删除切片返回什么? var list = myCollection.Find(Query.EQ("ListItems.ListItemId",listItemId)); 你得到了什么 - 这个查询是否按预期工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2012-06-01
    • 2021-06-29
    相关资源
    最近更新 更多