Wäre in einem Array für ein bestimmtes Element regex sagen, dass wir eine Sammlung haben wie folgt strukturiert:MongoDB:
{
_id:1,
tag:["speaker","tom"]
},
{
_id:2,
tag:["subject","tomatoes"]
}
{
_id:3,
tag:["subject","space"]
}
ich für bestimmte Elemente, wie zum Beispiel abfragen kann:
db.tags.find({tag:["speaker","tom"]})
Jetzt ist es möglich, eine Abfrage mit einer Regex durchzuführen, die dem zweiten Element dieses Arrays entspricht? so etwas wie:
db.tags.find({tag:["speaker",/tom.*/]}) ?
Ein regex auf dem Feld tag
(dh: db.tags.find({tag:/sp.*/})
) würde das gesamte Array passen, und ich bin nach einem Weg suchen, um es nur auf dem zweiten Suche zu machen ... vor der Prüfung diese Sammlung umstrukturieren zu müssen.
aktualisiert
Eine Abhilfe den $all
Operator zu verwenden ist:
db.tags.find({tag:{$all : ["speaker",/tom.*/]} })
, die gleich ist:
db.tags.find({ $and: [ { tag: "speaker }, { tags: /tom.*/ } ] }
Allerdings, das ist nicht der richtige Weg zu tun, da Beide Elemente werden sowohl auf die Zeichenfolge als auch auf die Regex überprüft.
Ja Entschuldigung. Ich nehme an, seit diese Abfrage funktioniert db.tags.find ({"tag.1": {$ exists: 1}}), dass Sie etwas Ähnliches mit einer Suche tun könnten, aber das scheint nicht der Fall zu sein. – ThrowsException
Absolut: mehr als eingelöst: absolviert! – Flint