#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 #