Minimalist Forum Reader
Hi anh em,
Mình có 1 số record kiểu như thế này trong mongoDB (tổng 9 cái nhưng mình chỉ post screenshot 2 cái gọi là ví dụ)

Mình muốn lọc tất cả những record có dificulty là easy và price nhỏ hơn/lớn hơn 1000.

Tuy nhiên kết quả lại không đúng như mình muốn.

Lọc < 1000: { difficulty: 'easy', price: { '$lt': '1000' } } thì trả về 0 record (lẽ ra phải có thằng price 397)
Lọc > 1000: { difficulty: 'easy', price: { '$gt': '1000' } } thì trả về toàn bộ bản ghi có độ khó easy và bao gồm cả thằng price 397.

Không biết là mình bị sai ở đâu, anh em chỉ giúp với. Thanks! :love:

1.JPG

2.JPG
Hình như của bác đang là "397" không phải 397 :p
Reactions: vanfsn
Hình như của bác đang là "397" không phải 397 :p

Thanks bác, để mình check lại.
Ngoài ra, có phải bắt buộc phải bỏ dấu '' trong query ko bác nhỉ? Mình từng nghe nói là có dấu hay ko cũng đều ok, tuy nhiên khi test thử trực tiếp ở Atlas thì bị như này
{ duration: { $gte: 5 } } -> trả đủ kết quả.
{ duration: { '$gte': '5' } } -> 0 kết quả.
{ duration: { $gte: 5 } } -> trả đủ kết quả.
{ duration: { '$gte': '5' } } -> 0 kết quả.


vãi bác, 5 vs '5' là number với string phải khác nhau chứ.
Reactions: Japan Today
vãi bác, 5 vs '5' là number với string phải khác nhau chứ.

Thanks bác.
Ở đây mình có gửi request như này
anh2.JPG


Phía express khi nhận nó sẽ có format là
Code:
{ difficulty: 'easy', duration: { gte: '5' } }
import-data.JPG

Sau khi replace xong thì nó sẽ trở thành
Code:
{ difficulty: 'easy', duration: { '$gte': '5' } }
và lúc này sẽ query dữ liệu.

Vậy ở đây vẫn là '5' chứ không phải 5, tại sao lúc gửi request từ Postman vẫn nhận đc đúng kết quả bác nhỉ?

Nếu mình trực tiếp query cũng cùng nội dung tương tự ở Atlas thì lại ko nhận đc gì.
qr.JPG

Sorry câu hỏi này nó khác với câu hỏi ban đầu của mình, lúc nãy chắc bị nhầm đâu đấy.
Thanks bác.
Ở đây mình có gửi request như này
View attachment 54493

Phía express khi nhận nó sẽ có format là
Code:
{ difficulty: 'easy', duration: { gte: '5' } }
View attachment 54494
Sau khi replace xong thì nó sẽ trở thành
Code:
{ difficulty: 'easy', duration: { '$gte': '5' } }
và lúc này sẽ query dữ liệu.

Vậy ở đây vẫn là '5' chứ không phải 5, tại sao lúc gửi request từ Postman vẫn nhận đc đúng kết quả bác nhỉ?

Nếu mình trực tiếp query cũng cùng nội dung tương tự ở Atlas thì lại ko nhận đc gì.
View attachment 54500
Sorry câu hỏi này nó khác với câu hỏi ban đầu của mình, lúc nãy chắc bị nhầm đâu đấy.
Chỗ này là thím chưa nắm được REST API rồi. Nếu thím dùng query. Thì truyền vào API hay URL tất cả nó đều thành string. Nên đoạn nhận query thím phải tự parse sang int nhé.
Đổi 1 API POST dùng request body thử coi
viYfUx5.png


Cả truyền lên như nào dùng thế chứ replace làm gì. API thím chỉ nhận tham số thôi. Query như nào nên xử lí ở backend. K nên truyền cả câu query lên replace các thứ vậy.
Ko hiểu sao mọi người thích xài NoSQL cho mấy bài toán thông thường thật. NoSQL mà query kiểu này thì về mặt hiệu năng phải gọi SQL Relationship bằng cụ ^^!
Ko hiểu sao mọi người thích xài NoSQL cho mấy bài toán thông thường thật. NoSQL mà query kiểu này thì về mặt hiệu năng phải gọi SQL Relationship bằng cụ ^^!

làm nó nhanh mà sửa nó cũng lẹ thím. Thím cứ làm việc outsource gặp kiểu khách hàng họ còn k biết họ muốn gì. Thì có mà sửa database suốt ngày, nên NoSQL là phù hợp
UDqbcUT.png
Reactions: HiddenEyes