我正在探索Azure CosmosDB,并且无法理解如何查询我的收藏。我创建了一个Web应用程序来添加和查询数据,但我想在Azure中搜索,不知道我应该如何构建我的查询。
目前我查询我的收藏集,以便返回所有内容。
SELECT * FROM c
这会返回很多信息。以下是数据的样本示例。
{
"$t": 3,
"$v": {
"searchTerm": {
"$t": 2,
"$v": "test"
},
"searchDate": {
"$t": 9,
"$v": 1501606675858
},
"_id": {
"$t": 7,
"$v": "Y³\u0013&Ò#\bø\u0005+ú"
},
"__v": {
"$t": 16,
"$v": 0
}
},
"id": "NTk4MGIzMTMyNmQyMjMwOGY4MDUyYmZh",
"_rid": "pR8YAPXxJQABAAAAAAAAAA==",
"_self": "dbs/pR8YAA==/colls/pR8YAPXxJQA=/docs/pR8YAPXxJQABAAAAAAAAAA==/",
"_etag": "\"020094b9-0000-0000-0000-5980b3130000\"",
"_attachments": "attachments/",
"_ts": 1501606672 }
有没有办法只查询某个“searchTerm”(我的CosmosDB中的一个字段)。我似乎无法掌握语法来过滤我的查询。我尝试了一些在SQL中似乎有意义的事情的组合,但它们都没有用。
感谢您的帮助。
答案 0 :(得分:2)
在Jesse的帮助下,我最终能够使用SQL“查询资源管理器”API来查询我的查询。
正如他解释的那样,因为我正在使用MongoDb的一个实例,所以我应该使用Mongo Query API,可以通过进入“Data Explorer” - >来访问Azure。选择你的收藏 - > “新的Mongo查询”。从那里你可以使用类似的东西进行搜索...
{searchTerm: "test"}
返回所有带有测试值的searchTerms。
如何使用SQL查询资源管理器
我想使用SQL Query Explorer执行相同的查询,经过一些试验和错误后,以下语法似乎有效。
select *
from collection
where collection["$v"].searchTerm["$v"] = "test"
不是最漂亮的解决方案,但它有效。只是想提一下,以防其他人试图用SQL Query Explorer查询他们的mongodb。
我不熟悉这种语法,我能找到的所有文档都没有提到这个独特的案例。
感谢。
答案 1 :(得分:1)
正如您在评论中所述,您使用的是Mongoose,这是一个用于与Mongo交互的ORM。如果您使用Mongo API插入数据,则还需要使用Mongo API查询数据,因为它们是为了支持包含所有$符号的文档格式而构建的。