Mongodb DataStax Stargate文档API
在DataStax文档API Swigger UI中显示的Swigger文档中,Mongodb DataStax Stargate文档API,mongodb,cassandra,datastax,Mongodb,Cassandra,Datastax,在DataStax文档API Swigger UI中显示的Swigger文档中,一个带有搜索过滤器的JSON blob,允许的运算符:$eq、$ne、$in、$nin、$gt、$lt、$gte、$lte、$lte、$code>存在什么,它没有文档化,所以我想问一下查询字符串是否基于MongoDB?在Cassandra之上公开的文档API是由开源项目提供的,实际上是由Datastax开发的,并嵌入到他们的Saas解决方案中 您创建的JSON查询字符串将在适当的CQL查询中进行解析和转换 源代码不说
一个带有搜索过滤器的JSON blob,允许的运算符:$eq、$ne、$in、$nin、$gt、$lt、$gte、$lte、$lte、$code>存在什么,它没有文档化,所以我想问一下查询字符串是否基于MongoDB?在Cassandra之上公开的文档API是由开源项目提供的,实际上是由Datastax开发的,并嵌入到他们的Saas解决方案中
您创建的JSON查询字符串将在适当的CQL查询中进行解析和转换
源代码不说谎您可以找到完整的代码,特别是where子句的解析
公共列表转换为过滤器(
列出预设路径,
JsonNode过滤器(JSON){
列表条件=新建ArrayList();
如果(!filterJson.isObject()){
抛出新的DocumentPiRequestException(“搜索需要一个JSON对象作为输入。”);
}
ObjectNode输入=(ObjectNode)filterJson;
迭代器字段=input.fieldNames();
while(fields.hasNext()){
字符串fieldName=fields.next();
if(fieldName.isEmpty()){
抛出新文档请求异常(
“您正在搜索的字段不能是空字符串!”);
}
...
在Cassandra之上公开的文档API是由开源项目提供的,实际上是由Datastax开发的,并嵌入到他们的Saas解决方案中
您创建的JSON查询字符串将在适当的CQL查询中进行解析和转换
源代码不说谎您可以找到完整的代码,特别是where子句的解析
公共列表转换为过滤器(
列出预设路径,
JsonNode过滤器(JSON){
列表条件=新建ArrayList();
如果(!filterJson.isObject()){
抛出新的DocumentPiRequestException(“搜索需要一个JSON对象作为输入。”);
}
ObjectNode输入=(ObjectNode)filterJson;
迭代器字段=input.fieldNames();
while(fields.hasNext()){
字符串fieldName=fields.next();
if(fieldName.isEmpty()){
抛出新文档请求异常(
“您正在搜索的字段不能是空字符串!”);
}
...
查询字符串在精神上与Mongo非常相似
下面是一些示例where子句,以提供一个想法:
{“name”:{“$eq”:“Eric”}
-非常简单,将具有字段name
的文档与值Eric
{“a.age”:{“$gt”:0}
-您还可以引用文档中的嵌套字段
{“friends.[0].name:{“$in”:[“Cassandra”]}
-数组元素是使用[]
引用的,如果文档的第一个朋友名为Cassandra,则这将匹配
{“friends.*.age”:{“$gte”:24}
-通配符*
可用于匹配数组中的任何元素或特定嵌套级别的任何字段。这匹配年龄大于等于24岁的任何朋友。查询字符串在精神上与Mongo非常相似
下面是一些示例where子句,以提供一个想法:
{“name”:{“$eq”:“Eric”}
-非常简单,将具有字段name
的文档与值Eric
{“a.age”:{“$gt”:0}
-您还可以引用文档中的嵌套字段
{“friends.[0].name:{“$in”:[“Cassandra”]}
-数组元素是使用[]
引用的,如果文档的第一个朋友名为Cassandra,则这将匹配
{“friends.*.age”:{“$gte”:24}}
-通配符*
可用于匹配数组中的任何元素或特定嵌套级别的任何字段。这匹配年龄大于等于24岁的任何朋友。我的意思是这些完全相同的运算符在MongoDB的查询语言中。我的意思是这些完全相同的运算符在MongoDB的查询语言中。
public List<FilterCondition> convertToFilterOps(
List<PathSegment> prependedPath,
JsonNode filterJson) {
List<FilterCondition> conditions = new ArrayList<>();
if (!filterJson.isObject()) {
throw new DocumentAPIRequestException("Search was expecting a JSON object as input.");
}
ObjectNode input = (ObjectNode) filterJson;
Iterator<String> fields = input.fieldNames();
while (fields.hasNext()) {
String fieldName = fields.next();
if (fieldName.isEmpty()) {
throw new DocumentAPIRequestException(
"The field(s) you are searching for can't be the empty string!");
}
...