#c# #rest #mongodb #mongodb-.net-driver
#c# #rest #mongodb #mongodb-.net-driver
Вопрос:
с активированными mongodb и rest я хотел бы запросить документ внутри другого документа, каков синтаксис? В моем примере у меня есть коллекция Person, которая содержит документ Order для каждого пользователя.
Например, у меня есть эта схема
public Person{
public int Id {get;set;}
public IList<Order> Order {get;set;}
}
public Order{
public int Id {get;set;}
public string OrderName {get;set;}
}
Если я хочу запросить пользователя с Id = 2, мне просто нужно ввести этот URL:
http://localhost:28017/MyDatabase/PersonCollection/?filter_Id=2
Но что, если я хочу запросить заказ с Id = 40?
http://localhost:28017/MyDatabase/PersonCollection/?filter_Order.Id=40
Но это не работает, оно возвращает все заказы без моего фильтра по Id = 40.
Каково решение?
Спасибо, Джон
Комментарии:
1. Можете ли вы показать документ одному человеку?
Ответ №1:
Синтаксис такой же, как обычно, поэтому следующий запрос должен сработать:
http://localhost:28017/MyDatabase/PersonCollection/?filter_Order.Id=40
Но ваш документ должен выглядеть следующим образом:
{
"_id": 1,
"Order": [
{
"Id": 40,
"OrderName": "name"
}
]
}
Комментарии:
1. привет, да, мой личный документ выглядит точно так, как вы написали. И я снова пробую ваш синтаксис, он по-прежнему возвращает все заказы вместо одного заказа. 🙁
2. @JohnSmith: Что в поле запроса в http-ответе? Также вы пробовали запускать тот же запрос из mongshell или какого-либо инструмента пользовательского интерфейса для mongodb (например, mongovue для Windows)?
filter_Order.Id
должно сработать на 100%, я это тестировал.3. Я не понимаю, что вы подразумеваете под «полем запроса в http-ответе». У меня есть MongoVUE, бесплатная версия, я не вижу, могу ли я вставить в нее свой Http-запрос? Вот как выглядит мой личный документ внутри MongoVUE {0} _id Orders [4] {0}{…} _id OrderName {1}{…} {2}{…}
4. Ответ должен быть таким:
{ "offset" : 0, "rows": [ ], "total_rows" : 0 , "query" : { "Order.Id" : 40 } , "millis" : 0 }
Здесь существует поле «запрос».5. @JohnSmith: С ответом все в порядке.
Order.Id
на языке mongodb звучит как «Дайте мне людей, которые содержат элемент заказа с идентификатором = 10».