How to accomplish WHERE IN query in Cloud Firestore [duplicate] - swift

This question already has answers here:
Google Firestore - How to get several documents by multiple ids in one round-trip?
(17 answers)
Closed 5 years ago.
I have tried to figure out how to return a query based on whether the values are in an array I have client side. I so far have found nothing regarding the issue. Is this possible?

Firestore now supports "IN" queries:
Announcement
Documentation
Example:
let citiesRef = db.collection("cities")
citiesRef.whereField("country", in: ["USA", "Japan"])
Before November 2019
In Firestore, there is no "where in" like you might be used to with SQL.
If you know the values you want to query, perform different queries for each one, and call getDocument() on each of the DocumentReference objects. You typically would do this in a loop an collect the results yourself.

Related

Fetch specific data from Firestore in Flutter [duplicate]

This question already has answers here:
Firestore - get specific fields from document
(4 answers)
Closed 12 days ago.
There is a database named userdetails of three columns name, email, and password. How can I fetch only name from Firebase Firestore? Please give an example.
I have stucked in that thing(fetching of specific data)
As far as I am aware, you can't do that with a server side query. A firebase query would return the DocumentSnapshot.
On the client side you would map that to what you need.
https://firebase.google.com/docs/firestore/query-data/get-data

Firebase where query (not include) [duplicate]

This question already has answers here:
Firestore - Possible to query by array-not-contains?
(4 answers)
Firestore get documents where value not in array?
(4 answers)
Closed 1 year ago.
I have a firestore collection with many document and all these documents include an array field (called "notFor") with a list of uid. In some cases the array contains only 1 value in some other cases it contains more than 1 value. Example
docA
notFor: "userB", "userC"
docB
notFor: "userB"
docC
notFor: "userA", "userC"
Is there any suggestion on how I could find a document in that collection that does not include "userB"? I basically would like to find docB by excluding all the docs where userC is present
I am writing in flutter however this is not so relevant for this case, I am just interested to understand if I can do something like this with the firestore operators.
thanks!

How to fetch the data on the basis of multiple ids? [duplicate]

This question already has answers here:
Querying mongodb from golang using the _id stored in an array
(3 answers)
Find by id with mgo
(1 answer)
Closed 4 years ago.
Here I'm fetching the data from the database mongodb using golang. Suppose I have an Id attribute and i want to receive the data on the basis of this id and it was easy by passing the id attribute in the query like below:-
c.Find(bson.M{"_id": 1}).One(&data)
If the id is given 1. but I have an case that i have find two or more at one time on the basis of the ids that it will returns the array of the ids like "_id":[1,2,3] then How will I retrieve the data from that ids. Can anyone help for if.
EDITED
IS this question solve my problem.
Thanks

update() function disregards limit() in mongo [duplicate]

This question already has answers here:
How to limit number of updating documents in mongodb
(8 answers)
Closed 5 years ago.
Lets say I have a 10 documents of Item in the database.
Lets retrieve 3 documents of Item matching some condition using limit().
documents = Item.objects(somefield=somecondition).limit(3)
Now if I do
documents.update(), mongoengine updates all the documents in the database matched by the query not just the 3 documents I have limited my query to.
I also tried setting multi=False in the params, but then only one document gets updated.
Is there anyway to do update while querying itself instead of looping over the documents one by one?
As far as I know there is no available solution to your problem provided by MongoDB. However you could try something like this
documents.forEach(
function (e) {
e.field = 'value';
db.collection.save(e);
}
);

How do I make a mongodb find where a field(object) includes all properties from my query (names and values)? [duplicate]

This question already has answers here:
MongoDB - how to query for a nested item inside a collection?
(3 answers)
Closed 9 years ago.
Consider my query to be: {cheese:"Cheddar"} and I have the following collections:
{vegetable:"Lettuce", cheese:"Cheddar"}, {cheese:"Blue"}, {milk:"Chocolate}, {cheese:"Cheddar"}
How do I make a find that returns me all collections that include cheese:Cheddar?
The result would be {vegetable:"Lettuce", cheese:"Cheddar"}, {cheese:"Cheddar"} but right now it fives me just {cheese:"Cheddar"}. From what I investigated I only found tokens to work with arrays.
I do NOT know the name of the property is cheese, nor do I know if there are any other ingredients.
I am looking for a way to get documents from a collection, where the query is included in a field, by the names of the properties in the query and the respective values.
Using db.collection.findOne({cheese:"Cheddar"}) you will get as a result only one document, maybe {cheese:"Cheddar"} or maybe {vegetable:"Lettuce", cheese:"Cheddar"}, the first one that MongoDB finds depending on the _id field. If what you want is getting both, you should use db.collection.find({cheese:"Cheddar"}).