Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Tôi đang tìm một toán tử, cho phép tôi kiểm tra, nếu giá trị của một trường chứa một chuỗi nhất định.

Cái gì đó như:

db.users.findOne({$contains:{"username":"son"}})

Điều đó có thể không?

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Bjorn

66.5K39 Huy hiệu vàng134 Huy hiệu bạc163 Huy hiệu Đồng39 gold badges134 silver badges163 bronze badges

Khi được hỏi ngày 15 tháng 5 năm 2012 lúc 23:20May 15, 2012 at 23:20

0

Bạn có thể làm điều đó với mã sau.

db.users.findOne({"username" : {$regex : "son"}});

Đã trả lời ngày 16 tháng 5 năm 2012 lúc 10:36May 16, 2012 at 10:36

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Parvin Gasimzadeparvin GasimzadeParvin Gasimzade

Huy hiệu vàng 24K855 Huy hiệu bạc80 Huy hiệu đồng8 gold badges55 silver badges80 bronze badges

9

Đã trả lời ngày 16 tháng 5 năm 2012 lúc 3:00May 16, 2012 at 3:00

Zheng Kaizheng KaiZheng Kai

3.3113 Huy hiệu vàng17 Huy hiệu bạc23 Huy hiệu đồng3 gold badges17 silver badges23 bronze badges

6

Kể từ phiên bản 2.4, bạn có thể tạo một chỉ mục văn bản trên (các) trường để tìm kiếm và sử dụng toán tử văn bản $ để truy vấn.

Đầu tiên, tạo chỉ mục:

db.users.findOne({"username" : {$regex : "son"}});
8

Sau đó, để tìm kiếm:

db.users.findOne({"username" : {$regex : "son"}});
9

Điểm chuẩn (tài liệu ~ 150K):

  • Regex (câu trả lời khác) => 5,6-6,9 giây
  • Tìm kiếm văn bản => .164-.201 giây

Notes:

  • Một bộ sưu tập chỉ có thể có một chỉ mục văn bản. Bạn có thể sử dụng chỉ mục văn bản đại diện nếu bạn muốn tìm kiếm bất kỳ trường chuỗi nào, như thế này:
    db.users.find( { 'name' : { '$regex' : yourvalue, '$options' : 'i' } } )
    
    0.
  • Một chỉ mục văn bản có thể lớn. Nó chứa một mục nhập chỉ mục cho mỗi từ sau hệ thống duy nhất trong mỗi trường được lập chỉ mục cho mỗi tài liệu được chèn.
  • Một chỉ mục văn bản sẽ mất nhiều thời gian hơn để xây dựng hơn một chỉ mục thông thường.
  • Một chỉ mục văn bản không lưu trữ các cụm từ hoặc thông tin về sự gần gũi của các từ trong các tài liệu. Do đó, các truy vấn cụm từ sẽ chạy hiệu quả hơn nhiều khi toàn bộ bộ sưu tập phù hợp với RAM.

Đã trả lời ngày 24 tháng 6 năm 2015 lúc 15:34Jun 24, 2015 at 15:34

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Okobokookobokookoboko

4.1927 Huy hiệu vàng39 Huy hiệu bạc66 Huy hiệu Đồng7 gold badges39 silver badges66 bronze badges

4

Vì đây là một trong những lượt truy cập đầu tiên trong các công cụ tìm kiếm và không có bản nào ở trên dường như hoạt động cho MongoDB 3.x, đây là một tìm kiếm Regex hoạt động:

db.users.find( { 'name' : { '$regex' : yourvalue, '$options' : 'i' } } )

Không cần phải tạo và thêm chỉ mục hoặc giống nhau.

Đã trả lời ngày 15 tháng 12 năm 2016 lúc 6:10Dec 15, 2016 at 6:10

NitainitaiNitai

1.6711 Huy hiệu vàng13 Huy hiệu bạc10 Huy hiệu đồng1 gold badge13 silver badges10 bronze badges

5

Đây là những gì bạn phải làm nếu bạn đang kết nối MongoDB qua Python

db.users.find({"username": {'$regex' : '.*' + 'Son' + '.*'}})

Bạn cũng có thể sử dụng một tên biến thay vì 'con trai' và do đó là nối chuỗi.

Đã trả lời ngày 15 tháng 11 năm 2013 lúc 6:30Nov 15, 2013 at 6:30

PatthebugpatthebugPatthebug

4.47710 Huy hiệu vàng45 Huy hiệu bạc89 Huy hiệu Đồng10 gold badges45 silver badges89 bronze badges

1

Cách đơn giản nhất để hoàn thành nhiệm vụ này

Nếu bạn muốn truy vấn nhạy cảm với trường hợpcase-sensitive

db.getCollection("users").find({'username':/Son/})

Nếu bạn muốn truy vấn không nhạy cảm với trường hợpcase-insensitive

db.getCollection("users").find({'username':/Son/i})

Đã trả lời ngày 29 tháng 8 năm 2017 lúc 10:24Aug 29, 2017 at 10:24

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Anurag Misraanurag MisraAnurag Misra

1.43217 Huy hiệu bạc23 Huy hiệu đồng17 silver badges23 bronze badges

1

Câu trả lời lý tưởng của nó sử dụng Chỉ số I Tùy chọn I cho trường hợp không nhạy cảm với trường hợpi option for case-insensitive

db.users.findOne({"username" : new RegExp(search_value, 'i') });

Đã trả lời ngày 19 tháng 6 năm 2019 lúc 5:45Jun 19, 2019 at 5:45

HishamhishamHisham

1.1691 Huy hiệu vàng16 Huy hiệu bạc23 Huy hiệu đồng1 gold badge16 silver badges23 bronze badges

1

Điều này sẽ làm công việc

db.users.find({ username: { $in: [ /son/i ] } });

db.users.find( { 'name' : { '$regex' : yourvalue, '$options' : 'i' } } )
1 chỉ ở đó để ngăn chặn các hạn chế của các trường hợp phù hợp với các chữ cái.

Bạn có thể kiểm tra tài liệu

db.users.find( { 'name' : { '$regex' : yourvalue, '$options' : 'i' } } )
2 trên tài liệu MongoDB. Đây là một liên kết: https://docs.mongodb.com/manual/reference/operator/query/regex/

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Turovishal

32.1k7 Huy hiệu vàng34 Huy hiệu bạc55 Huy hiệu Đồng7 gold badges34 silver badges55 bronze badges

Đã trả lời ngày 12 tháng 2 năm 2020 lúc 5:37Feb 12, 2020 at 5:37

Tatetatetate

1091 Huy hiệu bạc1 Huy hiệu đồng1 silver badge1 bronze badge

Nếu bạn cần thực hiện tìm kiếm nhiều hơn một thuộc tính, bạn có thể sử dụng $ hoặc. Ví dụ

Symbol.find(
  {
    $or: [
      { 'symbol': { '$regex': input, '$options': 'i' } },
      { 'name': { '$regex': input, '$options': 'i' } }
    ]
  }
).then((data) => {
  console.log(data)
}).catch((err) => {
  console.log(err)
})

Ở đây bạn đang dựa trên tìm kiếm của mình nếu đầu vào được chứa trong thuộc tính biểu tượng hoặc thuộc tính tên.

Đã trả lời ngày 7 tháng 4 năm 2021 lúc 22:44Apr 7, 2021 at 22:44

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Tôi sử dụng mã này và nó hoạt động cho chuỗi con tìm kiếm

db.users.find({key: { $regex: new RegExp(value, 'i')}})

Đã trả lời ngày 8 tháng 10 năm 2021 lúc 3:51Oct 8, 2021 at 3:51

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Nếu Regex không hoạt động trong giải pháp tổng hợp của bạn và bạn có đối tượng lồng nhau. Hãy thử đường ống tổng hợp này: (Nếu cấu trúc đối tượng của bạn đơn giản, chỉ cần xóa các điều kiện khác từ truy vấn bên dưới):aggregation pipeline: (If your object structure is simple then, just remove the other conditions from below query):

db.users.findOne({"username" : {$regex : "son"}});
0

Một cách khác sẽ là truy vấn trực tiếp như thế này:

db.users.findOne({"username" : {$regex : "son"}});
1

Đã trả lời ngày 19 tháng 7 năm 2021 lúc 6:06Jul 19, 2021 at 6:06

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

KushalsethkushalsethKushalSeth

2.3591 Huy hiệu vàng18 Huy hiệu bạc27 Huy hiệu đồng1 gold badge18 silver badges27 bronze badges

Nếu Regex của bạn bao gồm một biến, hãy đảm bảo thoát khỏi nó.

db.users.findOne({"username" : {$regex : "son"}});
2

Điều này có thể được sử dụng như thế này

db.users.findOne({"username" : {$regex : "son"}});
3

Hoặc trong một truy vấn MongoDB như thế này

db.users.findOne({"username" : {$regex : "son"}});
4

Đã đăng cùng một bình luận ở đây

Đã trả lời ngày 27 tháng 1 năm 2021 lúc 15:54Jan 27, 2021 at 15:54

Scott Wagerscott WagerScott Wager

5307 Huy hiệu bạc8 Huy hiệu Đồng7 silver badges8 bronze badges

Cho khung tổng hợp


Tìm kiếm trường

(

db.users.find( { 'name' : { '$regex' : yourvalue, '$options' : 'i' } } )
3 cho trường hợp tìm kiếm không nhạy cảm)

db.users.findOne({"username" : {$regex : "son"}});
5

Tìm kiếm tài liệu đầy đủ

(Chỉ hoạt động trên các trường được lập chỉ mục với chỉ mục văn bản

db.users.findOne({"username" : {$regex : "son"}});
6

Đã trả lời ngày 10 tháng 2 năm 2021 lúc 14:06Feb 10, 2021 at 14:06

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

F.H.F.H.F.H.

1.3451 Huy hiệu vàng17 Huy hiệu bạc31 Huy hiệu đồng1 gold badge17 silver badges31 bronze badges

2

Cách bỏ qua các thẻ HTML trong một trận đấu regexp:

db.users.findOne({"username" : {$regex : "son"}});
7

Điều này có lẽ rất dễ biến thành bộ lọc tổng hợp MongoDB.

Đã trả lời ngày 26 tháng 5 năm 2018 lúc 3:56May 26, 2018 at 3:56

Hướng dẫn how do i search for a word in a string in mongodb? - làm cách nào để tìm kiếm một từ trong chuỗi trong mongodb?

Tamás Polgártamás PolgárTamás Polgár

1.9624 Huy hiệu vàng19 Huy hiệu bạc44 Huy hiệu đồng4 gold badges19 silver badges44 bronze badges

Làm cách nào để tìm kiếm văn bản cụ thể trong MongoDB?

Sử dụng toán tử truy vấn văn bản $ để thực hiện tìm kiếm văn bản trên bộ sưu tập với chỉ mục văn bản. $ text sẽ mã hóa chuỗi tìm kiếm bằng khoảng trắng và hầu hết các dấu chấm câu là dấu phân cách và thực hiện logic hoặc của tất cả các mã thông báo như vậy trong chuỗi tìm kiếm.. $text will tokenize the search string using whitespace and most punctuation as delimiters, and perform a logical OR of all such tokens in the search string.

Làm cách nào để tìm kiếm một phần của chuỗi trong MongoDB?

Một bộ sưu tập chỉ có thể có một chỉ mục văn bản.Bạn có thể sử dụng chỉ mục văn bản đại diện nếu bạn muốn tìm kiếm bất kỳ trường chuỗi nào, như thế này: db.....
Một chỉ mục văn bản có thể lớn.....
Một chỉ mục văn bản sẽ mất nhiều thời gian hơn để xây dựng hơn một chỉ mục bình thường ..
Một chỉ mục văn bản không lưu trữ các cụm từ hoặc thông tin về sự gần gũi của các từ trong các tài liệu ..

Làm thế nào để tìm kiếm văn bản hoạt động trong MongoDB?

Tìm kiếm văn bản MongoDB sử dụng thư viện bắt nguồn quả cầu tuyết để giảm các từ thành dạng gốc dự kiến (hoặc gốc) dựa trên các quy tắc ngôn ngữ chung.Thân thuật thuật toán cung cấp giảm nhanh, nhưng các ngôn ngữ có ngoại lệ (chẳng hạn như các mẫu liên hợp động từ không đều hoặc mâu thuẫn) có thể ảnh hưởng đến độ chính xác.uses the Snowball stemming library to reduce words to an expected root form (or stem) based on common language rules. Algorithmic stemming provides a quick reduction, but languages have exceptions (such as irregular or contradicting verb conjugation patterns) that can affect accuracy.

MongoDB có đầy không

MongoDB cung cấp một giải pháp tìm kiếm toàn văn bản, tìm kiếm Atlas MongoDB, cho dữ liệu được lưu trữ trên Atlas MongoDB., for data hosted on MongoDB Atlas.