Rank 1: Thread
How can I execute a search query like this on the database?
SELECT * FROM <COLLECTION> WHERE <ATTRIBUTE1>="exact string" AND <ATTRIBUTE2> LIKE "%some string%"
Votes
0
Replies
9
Participants
Unknown
Messages
10
Rank 1: Thread
How can I execute a search query like this on the database?
SELECT * FROM <COLLECTION> WHERE <ATTRIBUTE1>="exact string" AND <ATTRIBUTE2> LIKE "%some string%"
Rank 1: Thread
I tried this but ATTRIBUTE2 needs to be an exact match string.
Query.equal('ATTRIBUTE1',['exact string']),Query.equal('ATTRIBUTE2',['exact string'])]```
I have a key index on `ATTRIBUTE1` and `ATTRIBUTE2`.
Also tried this approach, I combined the values of `ATTRIBUTE1` and `ATTRIBUTE2` into one attribute resulting to `ATTRIBUTE3` and make a fulltext index on it. The problem is it is using an OR logic
I also tried to have a fulltext index for both `ATTRIBUTE1` and `ATTRIBUTE2` (while the key index for each still exists) and implement this code below but it is returning a `Server Error`.```[Query.equal('ATTRIBUTE1','exact string'),Query.search('ATTRIBUTE2','some string')]```Admin
You can't do a substring match at the moment. The closing thing you can do is a prefix search with the search query and a full text index
Rank 1: Thread
Oh ok, can you provide maybe some sample code snippets on how to do this? Thank you for patiently replying to us.
Admin
Create 2 full text indexes: 1 with both attributes and then 1 with just the search attribute
Rank 1: Thread
oh ok let me try that.
Rank 1: Thread
these are my index
Rank 1: Thread
and this is my code. I am getting a server error.
const spots = await database.listDocuments(
process.env.NEXT_PUBLIC_DATABASE,
process.env.NEXT_PUBLIC_FOOD_SPOT,
[
Query.search("areaId", areaId),
Query.search("foodSpotName", search),
Query.orderDesc("ratings"),
Query.limit(10),
Query.offset(10 * pageNumber),
]
);```
Rank 1: Thread
I figured it out, changed my code into this
const spots = await database.listDocuments(
process.env.NEXT_PUBLIC_DATABASE,
process.env.NEXT_PUBLIC_FOOD_SPOT,
[
Query.equal("areaId", areaId),
Boolean(search)
? Query.search("foodSpotName", search)
: Query.equal("areaId", areaId),
Query.orderDesc("ratings"),
Query.limit(10),
Query.offset(10 * pageNumber),
]
);```
Admin
[SOLVED] How to achieve a LIKE query in the database?