Как ссылаться на документ в Mongodb с помощью MongoDBRef и как получить объединенный документ

#mongodb #mongodb-.net-driver #mongodb-query #mongo-collection #mongo-c-driver

#mongodb #mongodb-.net-driver #mongodb-запрос #монго-коллекция #mongo-c-driver

Вопрос:

Привет, я новичок в Mongo db, у меня есть подобная структура классов для хранения смайликов и категории смайликов. Я создал свойство mongodef в классе smilies для ссылки на коллекцию категорий смайликов, но разрешаю получать название категории смайликов…

 public class smilies {
    public ObjectId _id { get; set; }
    public MongoDBRef scat_name{ get; set; }
    public string smil_url { get; set; }
    public string smil_detail { get; set; }
}

public  class smilies_category {
    public ObjectId _id { get; set; }
    public string scat_name { get; set; }
}
  

и я использую приведенный ниже код для получения записи, и записи поступают, но только из одного документа

 function void getSmilies(){
  var refDocument = new BsonDocument { 
            {"$ref", "smil_scat_id"}, 
            {"$id", "539ef7c2e46b621314956e3b"}
        };

        var query = Query.EQ("smilies_category", refDocument);
        var result = db.GetCollection("smilies").Find(query)

}
  

Теперь я хочу объединить результирующий набор следующим образом

  "_id" : ObjectId("539f3ec1e46b62120023d364"),
 "scat_name : "Bussines",
 "smil_url" : "www.gmail.com",
 "smil_detail" : "Ok fine",
  

Как мы можем этого добиться?
Правильно ли я иду?
Пожалуйста, дайте мне знать решение

Комментарии:

1. О боже, опять? MongoDB не выполняет объединения.

Ответ №1:

ваш тип класса должен быть следующим

 public class smilies {
    public ObjectId _id { get; set; }
    public MongoDBRef scat_name{ get; set; }
    public string smil_url { get; set; }
    public string smil_detail { get; set; }
    public string[] CategoryName {get; set:}
}
  

И документ MongoDB будет

 {
_id:"".
smil_url :"",
...
...

CategoryName:[
            "cat1",
            "Cat2",
            ....
          ]
}
  

И измените свой запрос на эквивалент оператора $in в драйвере C #