Znalazłem odpowiedź na to pytanie dla C # i Perla, ale nie w natywnym interfejsie. Myślałem, że to zadziała:
db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } )
Zapytanie nie zwróciło wyników. Znalazłem 4ecbe7f9e8c1c9092c000027, wykonując db.theColl.find()
i chwytając ObjectId. W tej kolekcji znajduje się kilka tysięcy obiektów.
Przeczytałem wszystkie strony, które mogłem znaleźć na stronie internetowej mongodb.org i nie znalazłem. Czy to tylko dziwna rzecz? Wydaje mi się to całkiem normalne.
Jeśli używasz Node.js:
Edycja: poprawiono do nowego ObjectId (id), a nie nowego ObjectID (id)
źródło
import { ObjectId } from "mongodb";
pracuje dla bardziej wymagającego JS.Jeszcze łatwiejsze, zwłaszcza przy uzupełnianiu tabulatorów:
Edycja: działa również z
findOne
poleceniem ładniejszego wyjścia.źródło
db.test.find({'_id': ObjectId('4ecc05e55dd98a436ddcc47c')})
db.test.findOneAndDelete(ObjectId('57eujhs76e7hs877e868'))
poleceniu spowoduje usunięcie dokumentu, nawet jeśli identyfikator obiektu nie jest zgodny z określonym identyfikatorem. Musisz dokładnie to określićdb.test.find({'_id': ObjectId('4ecc05e55dd98a436ddcc47c')})
find()
, a nie dotyczyłofindOneAndDelete()
.Nie udało Ci się wstawić podwójnych cudzysłowów. Dokładne zapytanie to
źródło
Jeśli pracujesz nad powłoką mongo, zapoznaj się z tym: Odpowiedź Tylera Brocka
Napisałem odpowiedź, jeśli używasz mongodb za pomocą node.js
Nie musisz konwertować identyfikatora na
ObjectId
. Po prostu użyj :ta metoda kolekcji automatycznie konwertuje identyfikator na ObjectId.
Z drugiej strony :
db.collection.findOne({"_id":'4ecbe7f9e8c1c9092c000027'})
nie działa zgodnie z oczekiwaniami. Ręcznie przekonwertowałeś identyfikator naObjectId
.Można to zrobić w następujący sposób:
źródło
Właśnie miałem ten problem i działałem dokładnie tak, jak zostało to udokumentowane i nadal nie działało.
Spójrz na swój komunikat o błędzie i upewnij się, że nie masz żadnych skopiowanych znaków specjalnych. Wystąpił błąd
Kiedy podszedłem do postaci 43, był to dopiero początek mojego identyfikatora obiektu, po otwartych cudzysłowach, dokładnie tak, jak wkleiłem go. Umieściłem tam kursor i nacisnąłem backspace, nic się nie wydarzyło, gdy powinno było usunąć otwarty cytat. Znów nacisnąłem backspace i usunąłem otwartą wycenę, a następnie ponownie wstawiłem wycenę i wykonałem zapytanie i zadziałało, mimo że wyglądało dokładnie tak samo.
Robiłem programowanie w WebMatrix i skopiowałem identyfikator obiektu z konsoli. Ilekroć kopiujesz z konsoli w WebMatrix, prawdopodobnie wychwytujesz niewidoczne znaki, które będą powodować błędy.
źródło
Po otwarciu mongo CLI, podłączony i autoryzowany w odpowiedniej bazie danych.
źródło
W funkcjach ściegu MongoDB można to zrobić za pomocą BSON, jak poniżej:
Skorzystaj z
ObjectId
pomocnika w pakiecie narzędziowym BSON w tym celu, jak w poniższym przykładzie:źródło
Myślę, że lepiej napisz coś takiego:
źródło
Aby użyć metody Objectid, nie musisz jej importować. Jest już na obiekcie mongodb.
źródło
TypeError: db.ObjectId is not a function
ObjectId("SOMETHING")
Jeśli używasz Node.js:
W tym wymaganym trybie jest obiekt ObjectId.
źródło
Po prostu wykonaj:
źródło
Mongo Shell
wersji 3.2.7.