How can I find all the objects in a database with where a field of a object contains a substring?
If the field is A in an object of a collection with a string value:
I want to find all the objects in the db "database" where A contains a substring say "abc def".
I tried:
db.database.find({A: {$regex: '/^*(abc def)*$/''}})
but didn't work
UPDATE
A real string (in unicode):
Sujet Commentaire sur Star Wars Episode III - La Revanche des Sith 1
Need to search for all entries with Star Wars
db.test.find({A: {$regex: '^*(star wars)*$''}}) not wokring
Instead of this:
db.database.find({A: {$regex: '/^*(abc def)*$/''}})
You should do this:
db.database.find({A: /abc def/i })
^* is not actually valid syntax as ^ and $ are anchors and not something that is repeatable. You probably meant ^.* here. But there is no need for ^.* as that simply means "Everything up to the character following" and (abc def)* means "0 or more times "abc def", but it has to be at the end of the string, because of your $. The "i" at the end is to make it case insensitive.
Just use the string "Star Wars" and $regex
will do the rest
db.test.find({A: {$regex: 'Star Wars'}})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With