我正在研究spring boot数据mongoDB。我在查询包含特定对象列表的嵌套文档时遇到一些问题。
模拟课
@Document
public class Mock {
@Id
private String id;
@Indexed(unique = true)
private String name;
private List<Request> requests;
}
请求类
@Document
public class Request {
@Id
private String id;
private int status;
private String method;
private String endPoint;
private Map<String, Object> response;
private Map<String, Object> body;
private Map<String, String> params;
}
示例JSON
[
{
_id: '53fc6dde-7a534-4b37-a57e-t0bd62f50046',
name: 'mock1',
requests: [
{
status: 200,
method: 'GET',
endPoint: 'status',
response: {},
body: {},
params: {}
}
],
_class: 'com.example.mockserverspring.models.Mock'
},
{
_id: '73fc6dde-7a5b-4b37-a57e-d0bd62f50046',
name: 'tester',
requests: [
{
_id: '802220ea-a1c7-484d-af1b-86e29b540179',
status: 200,
method: 'GET',
endPoint: 'api',
response: {
data: 'GET'
},
body: {
body: 'body'
},
params: {
params: 'params'
}
},
{
_id: 'ff8673d7-01a9-4d6f-a42e-0214a56b227b',
status: 200,
method: 'GET',
endPoint: 'data',
response: {},
body: {
data: 'data'
},
params: {
value: '10'
}
},
{
_id: '7fd5a860-b415-43b0-8115-1c8e1b95c3ec',
status: 200,
method: 'GET',
endPoint: 'status',
response: {},
body: {},
params: {}
}
],
_class: 'com.example.mockserverspring.models.Mock'
}
]
所需的查询输出:传入endpoint、mockName、body、params和method
从上面的例子json:
如有任何疑问,请告诉我。
编辑:你想用什么来匹配?通常,当通过REST协议调用API/endpoint时,其工作方式如下:请求=
所以我做了一个请求,然后我得到了一个回复——不管它是好是坏,我喜欢还是不喜欢,我都得到了回复。不管我的爱人是否匹配。
我不明白的是整个设计和你试图通过哪些参数来匹配?如果请求列表中不存在值,我们如何匹配?
我认为首先有很多问题需要回答。但是这里有一些帮助,以及我将如何开始设计这个:
然后,您可以使用请求中的每一项来测试您的API。从云mongo服务(如mongodb)中引入/引出项目也很简单。com和express轻松完成剩下的工作。
要执行这个搜索,最好是使用mongoDB聚合,在这个聚合中,我们将能够一步一步地执行操作。
由于您只想在一个数组中查询一个子文档,所以我们必须执行的第一个操作是对该数组进行$unwind。这将分隔每个子文档,我们可以执行搜索。
{
"$unwind": "$requests"
}
现在我们将在$匹配中引入搜索参数。我们将能够使用尽可能多的参数。
{
"$match": {
"name": "tester",
"requests.method": "GET",
"requests.endPoint": "api",
"requests.body": {
body: "body"
},
"requests.params": {
params: "params"
}
}
}
最后,由于我们只需要特定字段的信息,我们将使用$replaceRoot来格式化输出。
{
"$replaceRoot": {
"newRoot": "$requests.response"
}
}
游戏场
我问了这个问题作为对另一个问题的评论,也在mongodb-user上发布了一个问题。到目前为止没有回复,所以我求助于问一个单独的问题。 文件说明: 如果字段包含一个数组,则$in操作符选择其字段包含数组的文档,该数组至少包含一个与指定数组中的值匹配的元素(例如,等等) 我正在使用: 在MongoDB外壳中: 下面是应根据文档及其生成的结果工作的查询列表: 为什么这个不行? 为什么我需要所有的钱?
我需要有关嵌套对象数组的查询优化的帮助。 我们有大量文档的集合,每个文档都包含嵌套的对象数组,最高可达3rd级,如下所示: 集合名称:产品 收集文件总数:2000万 每个文档的大小: 我为我的产品集合添加了以下索引,如下所示:, > products.id索引 { “id”:1 } 嵌套数组文档的索引 { " products . sellers . seller _ id ":1 } 我的疑问:
我试图用C#在MongoDB中用嵌套数组文档实现文本搜索功能。我有一个以下格式的MongoDB集合。
问题内容: 我对mongodb还是很陌生,有一件事我现在无法解决: 假设您有以下文档(简体): 哪个查询将返回json-object,其值等于“ value2”? 这意味着,我需要这个json-object: 当然,我已经尝试了很多可能的查询,但是没有一个返回正确的查询,例如 有人可以帮我看看我在做什么错吗? 谢谢! 问题答案: 使用位置运算符 输出量 使用聚合 输出 使用Java驱动程序 输出
这是我在mongo的文档: 我需要更新内部房间阵列中的对象。我尝试了一个选择匹配元素的查询没有语法错误,但出现了一个错误: “errmsg”:“字段“calendar.0.rooms.0.price”必须是数组,但在文档{u id:ObjectId('5cd26a886458720f7a66a3b8')中为字符串类型”, 这是我的疑问: 这是我在StackOverflow中找到的一些参考,但没有帮
如何根据数组的嵌套数组中的两个值参数进行查询?目标是返回具有和。 尝试了以下查询但没有成功。